微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自tf.keras中已加载模型的Mote-Carlo辍学

如何解决来自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 举报,一经查实,本站将立刻删除。