带有 dropout 的 Tensorflow 前向传递

Tensorflow forward pass with dropout

我正在尝试使用 dropout 来获取神经网络的误差估计。这涉及 运行 我的网络在训练和测试期间的几次前向传播,激活了 dropout。 Dropout 层似乎只在训练时激活而不是测试。在 TensorFlow 中可以通过调用一些函数或修改一些参数来完成吗?

是的,最简单的方法是使用具有 training 参数的 tf.layers.dropout,它可以是张量,您可以通过 truefalse 在任何特定会话 运行:

mode = tf.placeholder(tf.string, name='mode')
training = tf.equal(mode, 'train')

...

layer = tf.layers.dropout(layer, rate=0.5, training=training)

...

with tf.Session() as sess:
  sess.run(..., feed_dict={mode: 'train'})  # This turns on the dropout

  sess.run(..., feed_dict={mode: 'test'})   # This turns off the dropout