据我所知,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每个部分的丢失概率,但究竟在哪里?)
-
这种情况下的辍学不仅适用于RNN,还适用于预测过程?如果这是真的,有没有办法决定我是否在预测过程中使用辍学?
-
作为tensorflow网页中的API文档,如果variational_recurrent = True dropout按照纸张上的方法工作"Y. Gal, Z Ghahramani. "在回归神经网络中辍学的理论基础应用“ . https://arxiv.org/abs/1512.05287”我大致理解了本文 . 当我训练RNN时,我使用'batch'而不是单个时间序列 . 在这种情况下,tensorflow会自动将不同的丢失掩码分配给批处理中的不同时间序列?
1 回答