基于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