Keras LSTM:dropout 与 recurrent_dropout

Oli*_*row 7 deep-learning lstm keras recurrent-neural-network dropout

我知道这个帖子是问到类似的问题,

但我只是想澄清一下,最好是指向某种说明差异的 Keras 文档的链接。

在我看来,dropout在神经元之间起作用。并recurrent_dropout在时间步长之间运行每个神经元。但是,我对此毫无根据。

Keras 网站上的文档根本没有帮助。

Max*_*xim 4

Keras LSTM文档包含高级解释:

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

recurrent_dropout:在 0 和 1 之间浮动。为循环状态的线性变换而丢弃的单位的分数。

但这完全符合你提到的答案:

常规 dropout 应用于输入和/或输出,这意味着垂直箭头 fromx_t和 to h_t。...

循环丢失屏蔽(或“丢弃”)循环单元之间的连接;那就是你图片中的水平箭头。

如果您对公式级别的详细信息感兴趣,最好的方法是检查源代码:keras/layers/recurrent.py,查找rec_dp_mask(recurrent dropout mask) 和dp_mask。一个影响h_tm1(前一个存储单元),另一个影响inputs.