【发布时间】:2018-01-12 10:08:34
【问题描述】:
据我所知,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 的每个部分的 dropout 概率,但确切地说 在哪里?)
这种情况下的 dropout 是否不仅适用于 RNN 训练,还适用于预测过程?如果是真的,有什么方法可以决定我在预测过程中是否使用 dropout?
- 作为tensorflow网页中的API文档,如果variational_recurrent=True dropout按照论文上的方法工作 “Y. Gal, Z Ghahramani。“递归神经网络中 Dropout 的理论基础应用”。https://arxiv.org/abs/1512.05287“我大致理解了这篇论文。当我训练 RNN 时,我使用“批处理”而不是单个时间序列。在这种情况下,tensorflow 会自动为批次中的不同时间序列分配不同的 dropout 掩码?
【问题讨论】:
-
在预测期间,您希望使用 1.0 的 keep_prob。这就是为什么通常通过占位符而不是常量来提供该值更容易。
标签: python-3.x tensorflow neural-network bayesian rnn