首页 文章

Keras向前通过辍学

提问于
浏览
2

我正在尝试使用dropout来获取神经网络的error estimates .

这包括在训练后运行我的网络的几个前进传递,并且激活了丢失 . 但是,调用model.predict()时似乎没有激活Dropout . 这可以在Keras完成,还是我必须把我的重量放在其他地方?

2 回答

  • 0

    可以使用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 .

  • 1

    它已经在Keras中完成,参见例如this discussion在项目页面上 . 有关其工作原理的更多信息可以在CS231n: Convolutional Neural Networks for Visual Recognition中找到 - AFAIK在Keras中的实现非常类似 . 特别:

    (...)至关重要的是,请注意在预测函数中我们不再下降了,但是我们正在按pp执行两个隐藏层输出的缩放 . 这很重要,因为在测试时所有神经元都看到了所有输入,所以我们希望在测试时神经元的输出与训练时的预期输出相同 .

相关问题