How to turn off dropout for testing in Tensorflow? How to turn off dropout for testing in Tensorflow? python python

How to turn off dropout for testing in Tensorflow?


The easiest way is to change the keep_prob parameter using a placeholder_with_default:

prob = tf.placeholder_with_default(1.0, shape=())layer = tf.nn.dropout(layer, prob)

in this way when you train you can set the parameter like this:

sess.run(train_step, feed_dict={prob: 0.5})

and when you evaluate the default value of 1.0 is used.


With the new tf.estimator API you specify a model function, that returns different models, based on whether you are training or testing, but still allows you to reuse your model code.In your model function you would do something similar to:

def model_fn(features, labels, mode):    training = (mode == tf.estimator.ModeKeys.TRAIN)    ...    t = tf.layers.dropout(t, rate=0.25, training=training, name='dropout_1')    ...

The mode argument is automatically passed depending on whether you call estimator.train(...) or estimator.predict(...).


you should set the keep_prob in tensorflow dropout layer, that is the probability to keep the weight, I think you set that variable with values between 0.5 and 0.8.When testing the network you must simply feed keep_prob with 1.

You should define something like that:

keep_prob = tf.placeholder(tf.float32, name='keep_prob')drop = tf.contrib.rnn.DropoutWrapper(layer1, output_keep_prob=keep_prob)

Then change the values in the session:

_ = sess.run(cost, feed_dict={'input':training_set, 'output':training_labels, 'keep_prob':0.8}) # During training_ = sess.run(cost, feed_dict={'input':testing_set, 'output':testing_labels, 'keep_prob':1.}) # During testing