我正在尝试使用 dropout 来获取 error estimates对于神经网络。
这涉及在训练后运行我的网络的几次前向传递,并激活 dropout。然而,在调用 model.predict() 时,Dropout 似乎并未被激活。这可以在 Keras 中完成吗?还是我必须在其他地方进行权重?
最佳答案
随机前向传递(在测试期间使用 dropout)可以使用 keras 后端函数来实现。假设您有一个经过训练的神经网络,名为 model
:
from keras import backend as K
nb_MC_samples = 100
MC_output = K.function([model.layers[0].input, K.learning_phase()], [model.layers[-1].output])
learning_phase = True # use dropout at test time
MC_samples = [MC_output([x_test, learning_phase])[0] for _ in xrange(nb_MC_samples)]
MC_samples = np.array(MC_samples) # [#samples x batch size x #classes]
有关完整实现,请参阅以下内容 ipython notebook .
关于tensorflow - Keras 前向传递(带 dropout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44351054/