我目前正在尝试使用Keras (tensorflow后端)建立一个(LSTM)递归神经网络。我想使用带有MC dropout的变分Dropout。我相信变分丢弃已经通过LSTM层的"recurrent_dropout“选项实现了,但是我找不到任何方法来将"training”标志设置为true,就像经典的丢弃层一样。
发布于 2019-01-23 02:09:49
这在Keras中非常简单,首先需要定义一个同时接受模型输入和learning_phase
的函数
import keras.backend as K
f = K.function([model.layers[0].input, K.learning_phase()],
[model.layers[-1].output])
对于具有多个输入/输出的函数式API模型,您可以使用:
f = K.function([model.inputs, K.learning_phase()],
[model.outputs])
然后你可以调用像f([input, 1])
这样的函数,这将告诉Keras在这个调用期间启用学习阶段,执行Dropout。然后,您可以多次调用此函数,并结合预测来估计不确定性。
https://stackoverflow.com/questions/54313582
复制相似问题