Это довольно просто в 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.Затем вы можете вызывать эту функцию несколько раз и комбинировать прогнозы для оценки неопределенности.