我正在研究 Tensorflow 的语言模型教程。我的问题是:
在这一行中,他们使用 Wrapper 将 dropout 应用于 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)
为什么他们必须再次对这一行的输入应用 dropout ?
if is_training and config.keep_prob < 1:
inputs = tf.nn.dropout(inputs, config.keep_prob)
谢谢!
编辑:好的,我在写这个问题时并没有完全理解这篇论文。基本上 Zambera 建议在任何地方都应用 dropout,除了从隐藏到隐藏。但是,一层的输出是下一层的输入,所以我们将 dropout 应用于每一层的输出,然后应用于第一层的输入。