Keras:LSTM dropout 和 LSTM 循环 dropout 的区别

Posted

技术标签:

【中文标题】Keras:LSTM dropout 和 LSTM 循环 dropout 的区别【英文标题】:Keras: the difference between LSTM dropout and LSTM recurrent dropout 【发布时间】:2017-12-09 00:45:27 【问题描述】:

来自 Keras 文档:

dropout:在 0 和 1 之间浮动。要丢弃的单位的分数 输入的线性变换。

recurrent_dropout:在 0 和 1 之间浮动。 drop 用于循环状态的线性变换。

谁能指出下图中每个 dropout 发生的位置?

【问题讨论】:

for the linear transformation of the inputs 所以 x_t 【参考方案1】:

我建议看一下this paper 的(第一部分)。常规 dropout 应用于输入和/或输出,表示从 x_th_t 的垂直箭头。在您的情况下,如果您将其作为参数添加到您的图层,它将屏蔽输入;您也可以在循环层之后添加一个 Dropout 层来屏蔽输出。循环丢失掩盖(或“丢弃”)循环单元之间的连接;那将是您图片中的水平箭头。

这张照片取自上面的论文。左侧是输入和输出的常规 dropout。右边,常规 dropout 加上经常 dropout:

(在这种情况下忽略箭头的颜色;在论文中,他们进一步强调在每个时间步保持相同的 dropout 掩码)

【讨论】:

谢谢,@michetonu。链接的论文和您的解释很有帮助。关于如何在 Keras 中正确使用常规 dropout 和recurrent_dropout 进行时间序列预测,您有什么可以指出的吗?似乎有一些例子结合了两种辍学,而只使用了recurrent_dropout。 @KimMiller 从我所遇到的情况来看,使用一种或另一种似乎并没有多少科学依据,以及多少(还)。我倾向于优化两者并选择最有效的组合。 而且似乎在图层上应用(常规)dropout= 参数,而不是单独的 dropout 图层。这些方法之间的有效区别是什么?【参考方案2】:

上面的答案突出显示了一种经常性的 dropout 方法,但 tensorflow 和 keras 不使用该方法。 Tensorflow Doc.

Keras/TF 指的是Semeniuta et al 提出的一种循环方法。此外,请查看下图,比较不同的经常性 dropout 方法。上面答案中提到的Gal and Ghahramani 方法排在第二位,Semeniuta 方法是最正确的。

【讨论】:

以上是关于Keras:LSTM dropout 和 LSTM 循环 dropout 的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keras 功能模型中添加 Dropout?

如何选择 LSTM Keras 参数?

当我给它2时,Keras LSTM需要3个维度,而当我给它3时,它需要4个维度

Keras LSTM 模型过拟合

将 gridsearchCV 与 Keras RNN-LSTM 一起使用时出现尺寸错误

TensorFlow LSTM Dropout 实现