python - 来自深度学习的 LSTM 温度预测示例
问题描述
我正在尝试以下链接中的示例,
在步骤 36 中,使用了 dropout 和经常性 dropout,当我尝试训练模型时,损失显示为 NaN。
有人可以解释为什么会发生这种情况,并指导我找到解决方案。
与问题相关的代码在这里:
from keras.models import Sequential
from keras import layers
from keras.optimizers import RMSprop
model = Sequential()
model.add(layers.GRU(32,
dropout=0.1,
recurrent_dropout=0.5,
return_sequences=True,
input_shape=(None, float_data.shape[-1])))
model.add(layers.GRU(64, activation='relu',
dropout=0.1,
recurrent_dropout=0.5))
model.add(layers.Dense(1))
model.compile(optimizer=RMSprop(), loss='mae')
history = model.fit_generator(train_gen,
steps_per_epoch=500,
epochs=40,
validation_data=val_gen,
validation_steps=val_steps)
解决方案
from keras.models import Sequential
from keras import layers
from keras.optimizers import RMSprop
model = Sequential()
model.add(layers.GRU(32,
dropout=0.1,
recurrent_dropout=0.5,
return_sequences=True,
input_shape=(None, float_data.shape[-1])))
model.add(layers.GRU(64, activation='relu',
dropout=0.1,
recurrent_dropout=0.5))
model.add(layers.Dense(1))
model.compile(optimizer=RMSprop(), loss='mae')
history = model.fit_generator(train_gen,
steps_per_epoch=500,
epochs=40,
validation_data=val_gen,
validation_steps=val_steps)
这是导致问题的步骤。
此外,当我删除经常性辍学时,它工作正常。
推荐阅读
- linux - 就地修改除标题之外的 csv 文件上的所有列
- greenplum - Greenplum 错误“由于 VMEM 使用率高而取消查询。”
- jenkins - 在 Slave 上的 Pipeline 中运行 Groovy 脚本
- ms-access - 使下拉字段相互依赖
- mongodb - 在 GO 中实现 MongoDB shell
- javascript - 我该怎么做才能删除圈子?
- debugging - 如何在 gem5 中跨多个资源跟踪事件?
- excel - ComboBox.Change 事件在其他不相关列表发生更改时触发
- python - 无法正确修改 Python 类中的字典
- c++ - sizeof() 在 C++11 中的行为如何?