Tensorflow语言模型教程退出两次?

Tensorflow语言模型教程退出两次?,tensorflow,dropout,Tensorflow,Dropout,我正在编写Tensorflow的语言模型教程。我的问题是: 在中,他们使用包装器将退出应用于RNN lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(size, forget_bias=0.0) if is_training and config.keep_prob < 1: lstm_cell = tf.nn.rnn_cell.DropoutWrapper( lstm_cell, output_keep_prob=config.keep_p

我正在编写Tensorflow的语言模型教程。我的问题是:

在中,他们使用包装器将退出应用于RNN

lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(size, forget_bias=0.0)
if is_training and config.keep_prob < 1:
  lstm_cell = tf.nn.rnn_cell.DropoutWrapper(
      lstm_cell, output_keep_prob=config.keep_prob)
lstm\u cell=tf.nn.rnn\u cell.BasicLSTMCell(大小,偏差=0.0)
如果是培训和配置保持问题<1:
lstm_单元=tf.nn.rnn_单元.下拉式振打器(
lstm_单元格,输出_keep_prob=config.keep_prob)
为什么他们必须再次将辍学应用于学校的投入

if is_training and config.keep_prob<1:
输入=tf.nn.dropout(输入,配置keep_prob)
谢谢


编辑:好的,在我写这个问题的时候,我没有完全理解这篇论文。基本上,赞贝拉建议在任何地方都申请辍学,从隐蔽到隐蔽。但是,一个层的输出是下一层的输入,因此我们对每个层的输出应用dropout,然后对第一层的输入应用dropout。

您能让这个问题独立吗?这些指针是有效的,但不便于一眼看到您正在谈论的内容。这就是说,这两名辍学者是不同的类型。,而输入退出是“常规的”,删除其中一个输入项。@EricPlaton谢谢你的回答。我已经编辑了这个问题。我也读过那篇文章。据我所知,本文详细说明了如何仅将辍学应用于RNN的非经常性连接。我看不出他们说他们在哪里把辍学应用到输入条目上。请问这是一种流行的做法吗?如果可能的话,你能给我指一些关于良好辍学实践的论文吗?谢谢这篇论文解释了RNN“退出包装器”背后的背景。大约在2010年以前的论文提到了前馈网络的“通常辍学”,但它们在细节上有所不同(尽管目标相同)。现在输入上的辍学是一个“正常”的现象。我的理解——请原谅我,这是我目前的理解——是输入的辍学完成了LSTM部分的辍学。毕竟,这里的输入层是一个感知器(前馈子网络)。当网络接受序列作为输入(例如短语、视频或音轨)时,输入退出是有用的。好问题,我想知道如果输入退出也被应用,为什么编写代码的人没有选择在
dropoutrapper
中使用
output\u keep\u prob
。。。
if is_training and config.keep_prob < 1:
  inputs = tf.nn.dropout(inputs, config.keep_prob)