Tensorflow LSTM Dropout 实现

Tensorflow LSTM Dropout Implementation

我读到的关于将 dropout 应用于 rnn 的所有参考文献都是 Zaremba et. al 的这篇论文,它说不要在循环连接之间应用 dropout。神经元应该在 LSTM 层之前或之后被随机丢弃,而不是 LSTM 层间。好的

在每个人引用的论文中,似乎在每个时间步都应用了一个随机 'dropout mask',而不是生成一个随机 'dropout mask' 并重新使用它,将其应用于一个时间步中的所有时间步给定层被丢弃。然后在下一批生成一个新的'dropout mask'。

此外,也许目前更重要的是,tensorflow 是如何做到的?我检查了 tensorflow api 并尝试四处寻找详细的解释,但还没有找到。

您可以检查实现 here.

它在 RNNCell 的输入上使用 dropout op,然后在输出上使用您指定的保持概率。

您输入的每个序列似乎都会得到一个新的输入掩码,然后是输出掩码。序列内部没有变化。