我尝试训练一个神经网络进行回归。当使用 Keras 的 SGD 优化器类时,我在第一步之后突然从我的网络中得到 NAN 值作为预测。在我使用 Adam 优化器类进行培训之前,一切正常。我已经尝试过改变 SGD 的学习率,但在第一步和编译之后仍然会出现 NAN 值作为模型预测。
由于我的培训与 Adam 优化器一起工作,我不相信我的输入会导致 NAN。我已经检查了 NaN 的输入值并删除了所有这些值。那么什么可能导致这种行为呢?
这是我的代码:
from keras.optimizers import Adam
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(300,input_shape=(50,), kernel_initializer='glorot_uniform', activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(300, kernel_initializer='glorot_uniform', activation='relu')) model.add(Dropout(0.3))
model.add(Dense(500, kernel_initializer='glorot_uniform', activation='relu')) model.add(Dropout(0.3))
model.add(Dense(400, kernel_initializer='glorot_uniform', activation='relu')) model.add(Dense(1, kernel_initializer='glorot_uniform', activation='linear'))
opt = SGD(lr=0.001, decay=1e-6)
model.compile(loss='mse', optimizer=opt)
model.fit(x_train, y_train, epochs=100, batch_size=32, verbose=0, validation_data=(x_test, y_test))
#print(type(x_train)) ='pandas.core.frame.DataFrame'>
#print( x_train.shape) = (10000 , 50)