9
  • 调用 tf.nn.rnn_cell.DropoutWrapper() 时,tensorflow如何具体应用dropout ?

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

  • 我的问题是神经元是如何随时间关闭的?

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

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

  • 有没有办法深入了解实际的 tensorflow 源代码?
4

1 回答 1

4

您可以在此处检查实现。

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

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

于 2017-02-27T17:19:20.670 回答