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_t
到 h_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 的区别的主要内容,如果未能解决你的问题,请参考以下文章
当我给它2时,Keras LSTM需要3个维度,而当我给它3时,它需要4个维度