Tensorflow Keras前传带辍学

Tensorflow Keras前传带辍学,tensorflow,machine-learning,keras,dropout,Tensorflow,Machine Learning,Keras,Dropout,我正试图用辍学来建立一个神经网络 这包括在训练后运行我的网络的几次向前传递,并激活退出。但是,调用model.predict()时,似乎没有激活退出。这可以在Keras中完成,还是我必须在其他地方进行称重?这已经在Keras中完成,请参见项目页面上的示例。关于它如何工作的更多信息可以在-AFAIK中找到,一个非常类似的实现在Keras中。具体而言: (…)重要的是,请注意,在预测函数中,我们没有下降 现在,我们正在执行两个隐藏层输出的缩放 这一点很重要,因为在测试时,所有的神经元都能看到所有的信

我正试图用辍学来建立一个神经网络


这包括在训练后运行我的网络的几次向前传递,并激活退出。但是,调用model.predict()时,似乎没有激活退出。这可以在Keras中完成,还是我必须在其他地方进行称重?

这已经在Keras中完成,请参见项目页面上的示例。关于它如何工作的更多信息可以在-AFAIK中找到,一个非常类似的实现在Keras中。具体而言:

(…)重要的是,请注意,在预测函数中,我们没有下降 现在,我们正在执行两个隐藏层输出的缩放 这一点很重要,因为在测试时,所有的神经元都能看到所有的信息 他们的输入,所以我们希望测试时神经元的输出 与培训时的预期输出相同

可以使用keras后端函数实现随机前向传递(在测试期间使用辍学)。假设您有一个经过训练的神经网络,名为
模型

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]

有关完整的实现,请参见以下内容。

在获得错误估计时,我需要进行随机向前传递。即,每次使用不同的退出口罩向前传球100次。但在预测过程中,似乎没有神经元脱落,这正是这里的代码所说的:-在测试/预测阶段,不使用脱落。相反,应用比例权重。如果您希望在两个方向上都有显式辍学,您可以使用Lambda定义自己的版本。他希望在两个方向上都有显式辍学,也就是说,他希望能够在测试时应用辍学,而不是使用比例权重。对于TF>=2