【问题标题】:Caffe: why Dropout layer exists also in Deploy (testing)?Caffe:为什么Dropout层也存在于Deploy(测试)中?
【发布时间】:2018-11-23 23:57:32
【问题描述】:

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

我应该设置 dropout_ratio: 1.0 is testing?

【问题讨论】:

    标签: neural-network deep-learning caffe conv-neural-network pycaffe


    【解决方案1】:

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


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

    要详细了解"Dropout" 对训练稳定性的贡献及其对网络泛化能力的影响,您可以阅读Bengio's deep learning book 的第 7.12 节。

    【讨论】:

    • 所以是否在部署中放置 dropout 层不会产生影响,对吧?
    • @NimaHatami 如果您使用最新版本的 "Dropout" 层进行训练,该层在训练期间进行缩放,那么您将完全从您的 deploy.prototxt 中删除 dropout。查看代码,caffe 确实将输入复制到输出,这是多余的,所以我想完全删除该层会稍微更有效率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2017-10-28
    • 2019-08-09
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    相关资源
    最近更新 更多