我正在尝试预测一个连续值(第一次使用NN)。我已经标准化了输入数据。我不知道为什么从第一个纪元开始得到 loos:nan 输出。我阅读并尝试了以前对同一问题的回答中的许多建议,但没有一个对我有帮助。我的训练数据形状为:(201917,64)
这是我的代码:
model = Sequential()
model.add(Dense(100, input_dim=X.shape[1], activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(100, activation='relu'))
# Output layer
model.add(Dense(1, activation='linear'))
# Construct the neural network inside of TensorFlow
model.compile(loss='mean_squared_error', optimizer='Adam')
# train the model
model.fit(X_train, y_train, epochs=10, batch_size=32,
shuffle=True, verbose=2)
谢谢!
答案 0 :(得分:1)
NaN
在输入数据框中。在获取数据框值之前,应替换 NaN
值。否则会爆炸渐变。
答案 1 :(得分:0)
简而言之,您可以按照以下步骤查找问题的原因:
确保您的数据集应该是应该的:
使用 Dropout , BatchNormalization , L1 / L2 正则化< / strong>,更改您的 batch_size ,或将数据缩放到其他范围(例如 [-1,1] )。
答案 2 :(得分:0)
有时候,当学习率太高时,人会蒙受损失。一种解决方案是减轻它。
替换此代码:
# Construct the neural network inside of TensorFlow
model.compile(loss='mean_squared_error', optimizer='Adam')
具有:
from keras.optimizers import Adam #maybe put this at the top of your file
opt = Adam(lr=0.0001) #0.001 was the default, so try a smaller one
model.compile(optimizer=opt, loss='mean_squared_error')
查看是否有帮助。我也将首先尝试一个隐藏层,看看它如何进行。