• 【转载】 Caffe BN+Scale层和Pytorch BN层的对比


    原文地址:

    https://blog.csdn.net/elysion122/article/details/79628587

    -------------------------------------------------------------------------------------------------

    因为最近在将一个caffe的model移植到pytorch上,发现移植过去就没法收敛了,因此专门研究了一些细节。

    batch normalization的公式如下:

    caffe和pytorch在代码细节上略有不同,但是基本功能是一样的。

    Caffe 是使用BN层和Scale层来实现Batch normalization 的,简单地说就是BN层用来计算方差均值,Scale层进行归一化,这个很多技术博客都已经分析过了。

    其中BN层中有三个mult_lr:0比较奇怪,经过查资料,我的理解是BN层记录了三个数据:均值、方差、滑动系数,这三个数据不需要学习,仅仅需要根据进入网络的数据进行计算,因此设置为0。据说新版的caffe已经不需要专门设置这三个数据了。

    scale可以设置是不是需要bias,应该表示的是需不需要 ββ

    Pytorch的BN层实现了计算均值方差并且归一化的步骤,现在不同的版本参数略有不同,最新的  0.4.* 版本  多了一个参数。

    class torch.nn.BatchNorm3d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    • momentum=0.001和caffe默认值0.999,应该是一个意思,只不过一个是计算的1-momentum。
    • affine表示要不要两个系数γ和βγ,β

    • track_running_stats是    0.4(版本) 新出的一个参数,据说是追踪var和mean的,目前不是很清楚作用,等明白了再来更新。

  • 相关阅读:
    Do I Have an RNG(Random Number Generator)?
    网页上判断屏幕分辨率
    〖005〗数据监控
    How to use Emerge
    〖006〗开发语言
    Build patched kernel
    GNAP 1.5.1
    五一长假日记(1)
    SQL Server各种日期计算方法
    HOWTO Design your own Framebuffer Splash
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/10630335.html
Copyright © 2020-2023  润新知