当前位置:   article > 正文

PyTorch学习笔记(三)参数初始化与各种Norm层_instancenorm2d层初始化

instancenorm2d层初始化

Environment

  • OS: macOS Mojave
  • Python version: 3.7
  • PyTorch version: 1.4.0
  • IDE: PyCharm


0. 写在前面

数据在神经网络模型的层与层之间传播,数据过大或或小都会使训练遇上麻烦。合理的参数初始化和 Normalization 能够使模型中数据分布合理,让训练能够顺利地进行。

1. 初始化

PyTorch 中的 torch.nn.init 模块提供了十种初始化的方式,这里简单记录一下。

为改善梯度消失和爆炸的问题,需要保证神经网络中数据分布在合适的范围,这就是方差一致性。经典的 Xavier 和 kaiming 初始化都是从这个原则得来。

对于两个独立随机变量,它们乘积的方差为

D ( X Y ) = 方 差 的 定 义 E [ ( X Y − E ( X Y ) ) 2 ]   = E [ X 2 Y 2 − 2 X Y E ( X Y ) + E 2 ( X Y ) ]   = 期 望 的 线 性 性 质 E ( X 2 Y 2 ) − 2 E 2 ( X Y ) + E 2 ( X Y ) = E ( X 2 Y 2 ) − E 2 ( X Y ) D(XY) \overset{方差的定义}= E[(XY - E(XY))^2] \\ \ \\ = E[X^2 Y^2 - 2XY E(XY) + E^2(XY)] \\ \ \\ \overset{期望的线性性质}= E(X^2 Y^2) - 2E^2(XY) + E^2(XY) = E(X^2 Y^2) - E^2(XY) D(XY)=E[(XYE(XY))2] =E[X2Y22XYE(XY)+E2(XY)] =线E(X2Y2)2E2(XY)+E2(XY)=E(X2Y2)E2(XY)
因为,当 X, Y 相互独立时
E ( X Y ) = E ( X ) E ( Y ) , E ( X 2 Y 2 ) = E ( X 2 ) E ( Y 2 ) E(XY) = E(X) E(Y), E(X^2 Y^2) = E(X^2) E(Y^2) E(XY)=E(X)E(Y),E(X2Y2)=E(X2)E(Y2)
所以,
D ( X Y ) = E ( X 2 ) E ( Y 2 ) − [ E ( X ) E ( Y ) ] 2 D(XY) = E(X^2) E(Y^2) - [E(X)E(Y)]^2 D(XY)=E(X2)E(Y2)[E(X)E(Y)]2
又因
E ( X 2 ) = D ( X ) + E 2 ( X ) , E ( Y 2 ) = D ( Y ) + E 2 ( Y ) E(X^2) = D(X) + E^2(X), E(Y^2) = D(Y) + E^2(Y) E(X2)=D(X)+E2(X),E(Y2)=D(Y)+E2(Y)<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/203743?site
推荐阅读
相关标签
  

闽ICP备14008679号