【发布时间】: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