如何解决来自tf.keras中已加载模型的Mote-Carlo辍学
我正在使用tf.keras(不是Keras本身,而是keras的tensorflow实现)。 我想像在Monte-Carlo Dropout Tutorial中那样在预测过程中使用dropout,但是要使用已加载的神经网络,即已经训练好了,例如,假设一个在imagenet上预先训练的tf.keras模型,如下所示示例(仅修改了我的二进制分类任务的最后一层):
import tensorflow as tf
from tensorflow import keras
model = tf.keras.applications.DenseNet121(input_shape=(266,266,3),weights="imagenet",include_top=False,pooling="max")
final_layer = keras.layers.Dense( 1,activation=keras.activations.sigmoid )( model.output )
final_model = keras.Model( inputs=[model.input],outputs=[final_layer] )
然后,使用final_model和相同的图像,我总是得到相同的精确预测(这是正常的)。如何将所有辍学层设置为“训练模式”,从而在每次进行预测时都有不同的预测?
我尝试了类似的操作(来自this github issue),但由于它会引发错误,因此无法正常工作。
import tensorflow.keras.backend as K
f = K.function( [final_model.layers[0].input,K.learning_phase()],[final_model.layers[-1].output] )
然后在这种情况下如何执行蒙特卡洛辍学?非常感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。