张量流中'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) 

我唯一知道的是,它是用于训练时的辍学。 这里是我的三个问题

  1. 什么分别input_keep_prob,output_keep_prob和state_keep_prob? (我猜他们定义RNN各部分的辍学概率,但究竟 哪里?)

  2. 是辍学在训练时不仅适用于RNN这种情况下也预测过程?如果这是真的,有什么方法可以决定我是否在预测过程中使用丢失?

  3. 作为tensorflow网页API文档,如果variational_recurrent =真辍学工作根据在纸上 “Y加尔,Z Ghahramani。‘辍学的复发性神经网络的理论基础的应用程序的方法。’https://arxiv.org/abs/1512.05287”我大致了解这篇文章。当我训练RNN时,我使用'批'而不是单一的时间序列。在这种情况下,tensorflow会自动将不同的时差系列分配给不同的时差系列?
+3

在预测过程中,您希望使用keep_prob为1.0。这就是为什么通常通过占位符提供该值更容易,而不是常量。 –

keep_prob = tf.cond(dropOut,lambda:tf.constant(0.9), lambda:tf.constant(1.0)) 

cells = rnn.DropoutWrapper(cells, output_keep_prob=keep_prob)