How to disable dropout while prediction in keras?

Issue

I am using dropout in neural network model in keras. Little bit code is like

model.add(Dropout(0.5))
model.add(Dense(classes))

For testing, I am using preds = model_1.predict_proba(image).

But while testing Dropout is also participating to predict the score which should not be happen. I search a lot to disable the dropout but didn’t get any hint yet.

Do anyone have solution to disable the Dropout while testing in keras??

Solution

Keras does this by default. In Keras dropout is disabled in test mode. You can look at the code here and see that they use the dropped input in training and the actual input while testing.

As far as I know you have to build your own training function from the layers and specify the training flag to predict with dropout (e.g. its not possible to specify a training flag for the predict functions). This is a problem in case you want to do GANs, which use the intermediate output for training and also train the network as a whole, due to a divergence between generated training images and generated test images.

Answered By – Thomas Pinetz

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published