据我所知, DropoutWrapper 的使用如下
__init__(
cell,
input_keep_prob=1.0,
output_keep_prob=1.0,
state_keep_prob=1.0,
variational_recurrent=False,
input_size=None,
dtype=None,
seed=None
)
.
cell = tf.nn.rnn_cell.LSTMCell(state_size, state_is_tuple=True)
cell = tf.nn.rnn_cell.DropoutWrapper(cell, output_keep_prob=0.5)
cell = tf.nn.rnn_cell.MultiRNNCell([cell] * num_layers, state_is_tuple=True)
我唯一知道的是它用于训练时的辍学。这是我的三个问题
input_keep_prob、output_keep_prob 和 state_keep_prob 分别是什么?(我猜他们定义了 RNN 每一部分的 dropout 概率,但具体在哪里?)
这种情况下的 dropout 是否不仅适用于 RNN 训练,还适用于预测过程?如果是真的,有没有办法决定我是否在预测过程中使用 dropout?
- 作为tensorflow网页中的API文档,如果variational_recurrent=True dropout根据论文“Y. Gal, Z Ghahramani.“A Theoretically Grounded Application of Dropout in Recurrent Neural Networks”中的方法工作。https: //arxiv.org/ abs/1512.05287 "我大致了解了这篇论文。当我训练 RNN 时,我使用“批处理”而不是单个时间序列。在这种情况下,tensorflow会自动为批次中的不同时间序列分配不同的dropout掩码吗?