我意识到这篇文章提出了与此类似的问题。
但我只是想要一些澄清,最好是指向某种说明差异的 Keras 文档的链接。
在我看来,dropout
在神经元之间起作用。并recurrent_dropout
在时间步长之间工作每个神经元。但是,我对此毫无根据。
Keras 网站上的文档根本没有帮助。
Keras LSTM文档包含高级解释:
dropout:在 0 和 1 之间浮动。为输入的线性变换而丢弃的单位的分数。
循环丢弃:在 0 和 1 之间浮动。为循环状态的线性变换而丢弃的单位的分数。
但这完全符合您所指的答案:
常规 dropout 应用于输入和/或输出,表示从
x_t
和 到的垂直箭头h_t
。...循环丢失掩盖(或“丢弃”)循环单元之间的连接;那将是您图片中的水平箭头。
如果您对公式级别的详细信息感兴趣,最好的方法是检查源代码:keras/layers/recurrent.py
,查找rec_dp_mask
(recurrent dropout mask) 和dp_mask
. 一个是影响h_tm1
(前一个存储单元),另一个是影响inputs
.