首页 > 解决方案 > Caffe:为什么Dropout层也存在于Deploy(测试)中?

问题描述

我明白 Dropout 是为了高效训练,避免过拟合和加速学习。但是,我不明白为什么我在部署(测试)中也看到了它?

我应该设置 dropout_ratio: 1.0 is testing 吗?

标签: neural-networkdeep-learningcaffeconv-neural-networkpycaffe

解决方案


TL;DR
不要触摸 dropout 层。Caffe 知道它在推理过程中不应该做任何事情。


"Dropout"确实是对学习过程的一个非常强大的补充,并且在推理时似乎没有任何影响。
但是,如果您考虑一个幼稚的实现,其中在训练时仅将一些神经元设置为零,那么在测试时您必须通过缩放激活来补偿激活所有神经元(以获得相同的信号整体“强度”)。在这种情况下,推理时间"Dropout"变成了一个简单的比例层(通过已知和固定的比例因子)。
幸运的是,更周到的实现将此缩放作为训练的一部分(即,将一些神经元设置为零,同时将其余神经元缩放为预定义的缩放因子),这样,在推理时"Dropout"层绝对[无] [3]。

要了解有关"Dropout"对训练稳定性的贡献及其对网络泛化能力的影响的更多信息,您可以阅读Bengio 的深度学习书的第 7.12 节。


推荐阅读