gpt4 book ai didi

python-3.x - tensorflow 中的 'tf.contrib.rnn.DropoutWrapper' ' 到底是做什么的? (三个关键问题)

转载 作者:行者123 更新时间:2023-12-04 13:00:22 27 4
gpt4 key购买 nike

据我所知,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 mask?
  • 最佳答案

  • input_keep_prob 用于拟合特征权重时添加的 dropout 级别(包含概率)。 output_keep_prob 是为每个 RNN 单元输出添加的 dropout 级别。 state_keep_prob 用于馈送到下一层的隐藏状态。
  • 您可以按如下方式初始化上述每个参数:

  • import tensorflow as tf
    dropout_placeholder = tf.placeholder_with_default(tf.cast(1.0, tf.float32))
    tf.nn.rnn_cell.DropoutWrapper(tf.nn.rnn_cell.BasicRNNCell(n_hidden_rnn),

    input_keep_prob = dropout_placeholder, output_keep_prob = dropout_placeholder,
    state_keep_prob = dropout_placeholder)


    在预测期间或我们在训练期间可以提供的任何其他内容时,默认的 dropout 级别将为 1。
  • 屏蔽是针对拟合权重完成的,而不是针对批次中包含的序列。据我所知,它是为整个批次完成的。
  • 关于python-3.x - tensorflow 中的 'tf.contrib.rnn.DropoutWrapper' ' 到底是做什么的? (三个关键问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45507315/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com