【问题标题】:How do I add a dropout layer before a hidden layer in tensorflow?如何在tensorflow中的隐藏层之前添加一个dropout层?
【发布时间】:2019-06-23 20:41:11
【问题描述】:

我对在 tensorflow 中的第二个隐藏层之前添加一个 dropout 层有点困惑?

w_int = tf.initializers.glorot_normal()
w = tf.Variable(w_init(shape=[512, 256]))
b = tf.Variable(tf.random_normal(256))

keep_prob = tf.placeholder(tf.float32)
layer2 = tf.nn.sigmoid(tf.add(tf.matmul(x, w), b))

layer2_drop = tf.nn.dropout(layer2, keep_prob=keep_prob)

在训练期间我可以通过:

sess.run([adam, w], feed_dict={x: train_x, y_: train_y, keep_prob: 0.5})

在测试期间我可以将 keep_prob 设置为 1:

sess.run(cost_drop, feed_dict={x: mnist.test.images, y_: mnist.test.labels,  keep_prob: 1.0})

如果您检查 tensorflow 页面中的 tf.nn.dropout,您会看到 keep_prob 已弃用,我们应该改用 rate 参数。 所以不是像上面那样传递keep_prob = keep_prob,我需要在layer2_drop中传递rate = 1 - keep_prob吗?

如果不是,我应该如何在 layer2_drop 上使用 rate 而不是 keep_prob 如果我使用 rate 是否需要分别在训练和测试中通过 keep_prob

警告:不推荐使用某些参数:(keep_prob)。它们将在未来的版本中被删除。更新说明:请使用 rate 而不是 keep_prob。速率应设置为 rate = 1 - keep_prob。

【问题讨论】:

    标签: python python-3.x tensorflow


    【解决方案1】:

    如果您可以容忍警告消息,您现在可以使用keep_prob

    将来,只有rate 可用,要更新您应该使用建议的公式rate=1.-keep_prob

    虽然可以同时使用 keep_prob 和 rate ,但请不要。只要坚持最新的属性rate。您不必同时设置它们,因为它们描述的是同一事物,并且实际上只会使用一个。

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 1970-01-01
      • 2020-02-02
      • 2021-03-27
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多