欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于keras的CNN的蒙特卡罗dropout

程序员文章站 2022-07-13 11:35:18
...

基于keras的CNN的蒙特卡罗dropout

在利用keras或者tensorflow.keras写CNN时,一般会利用dropout层来防止CNN的过拟合。此时,除了一般如loss和val_accuracy之外,基于蒙特卡罗方法dropout的模型不确定性(uncertainty)估计也是很重要的。不确定性过高会导致模型的泛型不足。

蒙特卡罗dropout的原理就是在CNN模型开启dropout的同时,对同一测试集反复进行概率预测,由于每次动用的node不同,每一次的预测结果都会有些许不同。

之后对多次预测的平均概率进行总结(ie分类)。最后,计算此分类结果与真实值的正确率(accuracy rate)就是对我们当前CNN模型的不确定性预测。

值得注意的是,在keras框架下如果在构建CNN时没有对tf.keras.layers.Dropout进行提前设置,那dropout只在训练状态下被**,而在测试时默认关闭

这种情况下,只要在model.predict(test_data)时加入超参training为True,模型就可以自动启动dropout:

model.predict(test_data, training=True