同一组程序,在服务器上跑正常,在自己电脑上跑loss=nan?

#程序如下 服务器显卡P6000 我的3070ti

from keras.layers import Conv1D
from keras.layers import Input
from keras.layers import Dense
from keras.layers import GlobalMaxPooling1D
from keras import Model
from keras.optimizers import Adam
import numpy as np

x = np.ones((3,5,1))+ np.random.rand(3,5,1)
y = np.ones((3,4))
#参数设定与预留空间
point = 5
classes = 4
#模型建立
A3_oil = Input((point,1), name="i1")
A3_oil_b = Conv1D(2,3, name='i3')(A3_oil)
A3_oil_c = GlobalMaxPooling1D()(A3_oil_b)
output = Dense(classes, name='i5')(A3_oil_c)
model = Model(inputs=A3_oil, outputs=output)
model.compile(optimizer=Adam(0.001),
              loss='categorical_crossentropy',
              metrics = ['accuracy'])

# 模型训练
h1 = model.fit(x=x,y=y,batch_size=1,epochs=10)

#打印结果
t = model.get_layer('i3')
t1 = model.get_layer('i5')
print(t.get_weights())
print(t1.get_weights())

#服务器上结果

t------------------------------
[array([[[ 0.43431887,  0.41476223]],
       [[ 1.4486791 ,  0.59360373]],
       [[-0.12812461,  0.4679315 ]]], dtype=float32), 
array([0.6965934, 1.024095 ], dtype=float32)]
t1------------------------------
[array([[-1.0713661e+00, -5.9727323e-01,  7.2374243e-01,  8.7767702e-01],
       [ 9.6996349e-01, -1.1376817e+00,  2.9774686e-02,  5.3538941e-04]],
      dtype=float32), array([-0.82753366, -0.64814734,  0.5947477 ,  0.6944112 ], dtype=float32)]

#自己电脑上结果

[array([[[nan, nan]],
       [[nan, nan]],
       [[nan, nan]]], dtype=float32), array([nan, nan], dtype=float32)]

[array([[nan, nan, nan, nan],
       [nan, nan, nan, nan]], dtype=float32), array([nan, nan, nan, nan], dtype=float32)]

而且自己电脑上从第一步开始就是nan
后来我把卷积层去了就正常了,发现不能用卷积,一加卷积就loss=nan,哪怕batch=1,学习率都试过。
只要没有卷积层,其他都能正常训练,这是怎么了?

#去掉卷积
from keras.layers import Conv1D
from keras.layers import Input
from keras.layers import Dense
from keras.layers import GlobalMaxPooling1D
from keras import Model
from keras.optimizers import Adam
import numpy as np

x = np.ones((3,5,1))+ np.random.rand(3,5,1)
y = np.ones((3,4))
#参数设定与预留空间
point = 5
classes = 4
#模型建立
A3_oil = Input((point,1),name="i1")
A3_oil_c = GlobalMaxPooling1D()(A3_oil)
output = Dense(classes,name='i5')(A3_oil_c)
model = Model(inputs=A3_oil,outputs=output)
model.compile(optimizer=Adam(0.001),
              loss='categorical_crossentropy',
              metrics = ['accuracy'])
# 模型训练
h1 = model.fit(x=x,y=y,batch_size=1,epochs=10)
t1 = model.get_layer('i5')
print(t1.get_weights())

#结果

t1-----------------------------------
[array([[ 0.07497485, -0.2384741 ,  0.6795341 ,  0.20184563]],
      dtype=float32), array([ 0.026965  , -0.02952293, -0.02944644,  0.02643826], dtype=float32)]

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。