张量流中'tf.contrib.rnn.DropoutWrapper'的确切含义是什么? (三级citical问题)
问题描述:
据我所知,DropoutWrapper使用如下张量流中'tf.contrib.rnn.DropoutWrapper'的确切含义是什么? (三级citical问题)
__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 =真辍学工作根据在纸上 “Y加尔,Z Ghahramani。‘辍学的复发性神经网络的理论基础的应用程序的方法。’https://arxiv.org/abs/1512.05287”我大致了解这篇文章。当我训练RNN时,我使用'批'而不是单一的时间序列。在这种情况下,tensorflow会自动将不同的时差系列分配给不同的时差系列?
答
keep_prob = tf.cond(dropOut,lambda:tf.constant(0.9), lambda:tf.constant(1.0))
cells = rnn.DropoutWrapper(cells, output_keep_prob=keep_prob)
在预测过程中,您希望使用keep_prob为1.0。这就是为什么通常通过占位符提供该值更容易,而不是常量。 –