首页 文章

张量流中'tf.contrib.rnn.DropoutWrapper'究竟是做什么的? (三个政治问题)

提问于
浏览
6

据我所知,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 回答

  • 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)
    

相关问题