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

Eri*_*ric 7 bayesian neural-network python-3.x tensorflow rnn

据我所知,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
)
Run Code Online (Sandbox Code Playgroud)

.

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)
Run Code Online (Sandbox Code Playgroud)

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

  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 = tf.cond(dropOut,lambda:tf.constant(0.9), lambda:tf.constant(1.0))

cells = rnn.DropoutWrapper(cells, output_keep_prob=keep_prob) 
Run Code Online (Sandbox Code Playgroud)