我尝试使用dropout来获取神经网络的误差估计。这涉及在训练和测试期间多次运行我的网络的前向传播,并激活dropout。dropout层似乎只在训练时被激活,而在测试时不被激活。在Tensorflow中是否可以通过调用一些函数或修改一些参数来实现这一点?
回答:
是的,最简单的方法是使用tf.layers.dropout
,它有一个training
参数,可以在任何特定会话运行中通过true
或false
来定义这个张量:
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'}) # 这会开启dropout sess.run(..., feed_dict={mode: 'test'}) # 这会关闭dropout