在Keras LSTM中,培训损失是NaN [英] training loss is nan in keras LSTM

查看:27
本文介绍了在Keras LSTM中,培训损失是NaN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在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

推荐答案

我比Kera更熟悉使用PyTorch。不过,我仍建议您做几件事:

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

  2. 您可以尝试降低学习率(0.001或更小的值)和/或删除渐变裁剪。我以前确实有过梯度贡献是NaN损失的原因。

  3. 尝试缩放您的数据(尽管未缩放的数据通常会造成无限损失,而不是NaN损失)。在skLearning中使用StandardScaler或其他定标器之一。

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

这篇关于在Keras LSTM中,培训损失是NaN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆