keras - keras LSTM 中的训练损失为 nan

标签 keras deep-learning time-series lstm

我在 google colab 中使用 GPU 调整此代码以创建多层 LSTM。用于时间序列预测。

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM, LSTM, BatchNormalization
from keras.optimizers import SGD
model = Sequential()
model.add(LSTM(units = 50, activation = 'relu', return_sequences=True, input_shape= 
(1,len(FeaturesDataFrame.columns))))
model.add(Dropout(0.2))
model.add(LSTM(3, return_sequences=False))
model.add(Dense(1))
opt = SGD(lr=0.01, momentum=0.9, clipvalue=5.0)
model.compile(loss='mean_squared_error', optimizer=opt)

请注意,我使用了渐变剪裁。但是,当我训练这个模型时,它返回 nan 作为训练损失:

history = model.fit(X_t_reshaped, train_labels, epochs=20, batch_size=96, verbose=2)

这是结果

Epoch 1/20
316/316 - 2s - loss: nan 
Epoch 2/20
316/316 - 1s - loss: nan 
Epoch 3/20
316/316 - 1s - loss: nan
Epoch 4/20
316/316 - 1s - loss: nan
Epoch 5/20
316/316 - 1s - loss: nan
Epoch 6/20
316/316 - 1s - loss: nan
Epoch 7/20
316/316 - 1s - loss: nan 
Epoch 8/20
316/316 - 1s - loss: nan 
Epoch 9/20
316/316 - 1s - loss: nan 
Epoch 10/20 
316/316 - 1s - loss: nan
Epoch 11/20
316/316 - 1s - loss: nan
Epoch 12/20
316/316 - 1s - loss: nan
Epoch 13/20
316/316 - 1s - loss: nan
Epoch 14/20
316/316 - 1s - loss: nan
Epoch 15/20
316/316 - 1s - loss: nan 
Epoch 16/20
316/316 - 1s - loss: nan
Epoch 17/20
316/316 - 1s - loss: nan
Epoch 18/20
316/316 - 1s - loss: nan
Epoch 19/20
316/316 - 1s - loss: nan
Epoch 20/20
316/316 - 1s - loss: nan

最佳答案

我比使用 Keras 更熟悉 PyTorch。但是,我仍然建议您做几件事:

  1. 检查您的数据。确保您传递给模型的数据中没有缺失值或空值。这是最有可能的罪魁祸首。单个空值将导致损失为 NaN。

  2. 您可以尝试降低学习率(0.001 或更小)和/或移除梯度裁剪。实际上,我之前确实有梯度导致 NaN 丢失。

  3. 尝试缩放您的数据(尽管未缩放的数据通常会导致无限损失而不是 NaN 损失)。使用 StandardScaler 或 sklearn 中的其他缩放器之一。

如果一切都失败了,那么我会尝试将一些非常简单的虚拟数据传递到模型中,看看问题是否仍然存在。然后你就会知道是代码问题还是数据问题。希望这会有所帮助,如果您有问题,请随时提出问题。

关于keras - keras LSTM 中的训练损失为 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66667550/

相关文章:

python - 如何让 Keras 在 Anaconda 中使用 Tensorflow 后端?

machine-learning - 深度学习多输入 CNN

python - 在 Google Colab 中调试

python - 子集数据框 Pandas 时间序列

mysql - Grafana 不读取日期时间列

python - 如何 reshape 文本数据以适合keras中的LSTM模型

python - 如何将 Tensorflow 的结果记录到 CSV 文件

python - 关于 tf.nn.leaky_relu 中 alpha 的详细信息(features, alpha=0.2, name=None)

machine-learning - Pytorch:mat1和mat2形状无法相乘(64x8192和12800x10)

python - 如何在 PyMC3 中随时间更新观察结果?