Tensorflow LSTM Dropout 实现
Tensorflow LSTM Dropout Implementation
- tensorflow 在调用 tf.nn.rnn_cell.DropoutWrapper() 时具体如何应用 dropout?
我读到的关于将 dropout 应用于 rnn 的所有参考文献都是 Zaremba et. al 的这篇论文,它说不要在循环连接之间应用 dropout。神经元应该在 LSTM 层之前或之后被随机丢弃,而不是 LSTM 层间。好的
- 我的问题是神经元如何随时间关闭?
在每个人引用的论文中,似乎在每个时间步都应用了一个随机 'dropout mask',而不是生成一个随机 'dropout mask' 并重新使用它,将其应用于一个时间步中的所有时间步给定层被丢弃。然后在下一批生成一个新的'dropout mask'。
此外,也许目前更重要的是,tensorflow 是如何做到的?我检查了 tensorflow api 并尝试四处寻找详细的解释,但还没有找到。
- 有没有办法深入研究实际的 tensorflow 源代码?
您可以检查实现 here.
它在 RNNCell 的输入上使用 dropout op,然后在输出上使用您指定的保持概率。
您输入的每个序列似乎都会得到一个新的输入掩码,然后是输出掩码。序列内部没有变化。
- tensorflow 在调用 tf.nn.rnn_cell.DropoutWrapper() 时具体如何应用 dropout?
我读到的关于将 dropout 应用于 rnn 的所有参考文献都是 Zaremba et. al 的这篇论文,它说不要在循环连接之间应用 dropout。神经元应该在 LSTM 层之前或之后被随机丢弃,而不是 LSTM 层间。好的
- 我的问题是神经元如何随时间关闭?
在每个人引用的论文中,似乎在每个时间步都应用了一个随机 'dropout mask',而不是生成一个随机 'dropout mask' 并重新使用它,将其应用于一个时间步中的所有时间步给定层被丢弃。然后在下一批生成一个新的'dropout mask'。
此外,也许目前更重要的是,tensorflow 是如何做到的?我检查了 tensorflow api 并尝试四处寻找详细的解释,但还没有找到。
- 有没有办法深入研究实际的 tensorflow 源代码?
您可以检查实现 here.
它在 RNNCell 的输入上使用 dropout op,然后在输出上使用您指定的保持概率。
您输入的每个序列似乎都会得到一个新的输入掩码,然后是输出掩码。序列内部没有变化。