以下内容思路来自于:
https://zhuanlan.zhihu.com/p/289384231
想要看完整文章的可以看以上内容,本文提供一个精简的说明。
图片的来源是 Group Norm: https://arxiv.org/abs/1803.08494
可以借助这个feature map来进行一个直观的说明,立方体的3个维度为别为batch/ channel/ HW
BN计算均值和标准差时,固定channel(在一个channel内),对HW和batch作平均;LN计算均值和标准差时,固定batch(在一个batch内),对HW和channel作平均;IN计算均值和标准差时,同时固定channel和batch(在一个batch内中的一个channel内),对HW作平均;GN计算均值和标准差时,固定batch且对channel作分组(在一个batch内对channel作分组),在分组内对HW作平均。
此外知乎文章中还给出了另一个图片,也能比较好的说明问题,如下图所示:
所以说如果面向的对象是股票时序面板(比如说行是时间,列是各个个股)的话,那应该进行BN的操作,因为不同的channel对应的特征含义不同,然后对于不同的batch而言,在同一个feature map上相同位置对应的股票是同一个股票,所以进行BN操作是合理的,假定我们的特征是(N,C,H,W),即第一个是数据个数,即batch数目,第二个是特征channel,即叠加的不同的channel,如channel1是价格因子,channel2是成交量因子,第三个是时间,表示时间序列,第四个是不同的个股
然后在Pytorch中,可以使用nn.BatchNorm1d,nn.BatchNorm2d等来进行操作
其区别在于:
nn.BatchNorm1d对于特征为(N, C, L)的进行处理,nn.BatchNorm2d对(N, C, H, W)的进行处理
链接在此:https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm1d.html
最后我还是非常建议大家去读一下作者自己的整理:
https://zhuanlan.zhihu.com/p/289384231
以及他所搬运的文章(传送门:从上面的链接进入):