python - GRU 层的经常性 dropout 大大增加了损失值
问题描述
我正在使用 Keras 使用 Jena 气候数据集和 GRU 层来预测温度。当我将recurrent_dropout
一个值设置为大于 0.1 时,程序的准确性会显着下降,经过几轮之后,NaN
即使 dropout 值不大,它也会变得如此。没有a的相同模型recurrent_dropout
可以正常工作。
作为我学习的一部分,我从我的参考书中复制了一些代码,我不希望遇到很大的问题。这是我正在处理的代码,我不明白问题出在哪里。
mean = float_data[:200000].mean(axis = 0)
float_data -= mean
std = float_data[:200000].std(axis = 0)
float_data /= std
model = Sequential()
model.add(layers.GRU(32, dropout = 0.2, recurrent_dropout = 0.2, input_shape = (None, float_data.shape[-1])))
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)
解决方案
序列的每个时间步都应用循环丢失。因此,例如,如果(循环)辍学率为 0.1,并且您通过循环传递长度为 100 的序列,则任何循环单元在序列末尾仍处于活动状态的概率为 (.9^100 ) = 1/37600。
推荐阅读
- udp - 如何通过 UDP 将视频从 GStreamer 1.0 流式传输到 VLC
- python - 如何从 Python 中的推文 URL 中获取文本?
- merge - SAS如何将单个单元格水平合并为汇总单元格?
- node.js - 如何保存具有特定 ID 的图像并通过 mongo 数据库中的该 ID 从数据库中获取该图像。感谢您的任何想法或建议
- macos - 如何使用 VS Code 终端删除前面的单词
- r - 使用 SendGrid 从 R 发送电子邮件时如何添加 cc
- javascript - 如何通过纯 Javascript 编码的小部件连接到 Django 数据库?
- javascript - Materialize-css:M.AutoInit() 返回“无法读取未定义的属性 'classList'”
- flutter - 即使指定了 isi 参数,用户也不会在动态链接点击时导航到应用商店
- c - “定义”不是 C99 中的保留关键字或宏名称吗?