PyTorch学习之归一化层(BatchNorm、LayerNorm、InstanceNorm、GroupNorm)[通俗易懂]

PyTorch学习之归一化层(BatchNorm、LayerNorm、InstanceNorm、GroupNorm)[通俗易懂]BN,LN,IN,GN从学术化上解释差异:BatchNorm:batch方向做归一化,算NHW的均值LayerNorm:channel方向做归一化,算CHW的均值InstanceNorm:一个channel内做归一化,算H*W的均值GroupNorm:将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值…

大家好,又见面了,我是你们的朋友全栈君。

BN,LN,IN,GN从学术化上解释差异:
BatchNorm:batch方向做归一化,算NHW的均值,对小batchsize效果不好;BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布
LayerNorm:channel方向做归一化,算CHW的均值,主要对RNN作用明显;
InstanceNorm:一个channel内做归一化,算H*W的均值,用在风格化迁移;因为在图像风格化中,生成结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,因而对HW做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。
GroupNorm:将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值;这样与batchsize无关,不受其约束。
SwitchableNorm是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。

在这里插入图片描述

1 BatchNorm

torch.nn.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
torch.nn.BatchNorm3d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

参数:

num_features: 来自期望输入的特征数,该期望输入的大小为’batch_size x num_features [x width]’
eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
momentum: 动态均值和动态方差所使用的动量。默认为0.1。
affine: 布尔值,当设为true,给该层添加可学习的仿射变换参数。
track_running_stats:布尔值,当设为true,记录训练过程中的均值和方差;

实现公式:
在这里插入图片描述

2 GroupNorm

torch.nn.GroupNorm(num_groups, num_channels, eps=1e-05, affine=True)

参数:

num_groups:需要划分为的groups
num_features: 来自期望输入的特征数,该期望输入的大小为’batch_size x num_features [x width]’
eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
momentum: 动态均值和动态方差所使用的动量。默认为0.1。
affine: 布尔值,当设为true,给该层添加可学习的仿射变换参数。

实现公式:
在这里插入图片描述

3 InstanceNorm

torch.nn.InstanceNorm1d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)
torch.nn.InstanceNorm2d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)
torch.nn.InstanceNorm3d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)

参数:

num_features: 来自期望输入的特征数,该期望输入的大小为’batch_size x num_features [x width]’
eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
momentum: 动态均值和动态方差所使用的动量。默认为0.1。
affine: 布尔值,当设为true,给该层添加可学习的仿射变换参数。
track_running_stats:布尔值,当设为true,记录训练过程中的均值和方差;

实现公式:
在这里插入图片描述

4 LayerNorm

torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True)

参数:

normalized_shape: 输入尺寸
[∗×normalized_shape[0]×normalized_shape[1]×…×normalized_shape[−1]]
eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
elementwise_affine: 布尔值,当设为true,给该层添加可学习的仿射变换参数。

实现公式:
在这里插入图片描述

5 LocalResponseNorm

torch.nn.LocalResponseNorm(size, alpha=0.0001, beta=0.75, k=1.0)

参数:

size:用于归一化的邻居通道数
alpha:乘积因子,Default: 0.0001
beta :指数,Default: 0.75
k:附加因子,Default: 1

实现公式:
在这里插入图片描述

参考:BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132340.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C#之桶中取黑白球问题

    C#之桶中取黑白球问题

    2021年9月10日
    69
  • ICE的服务器对象实现「建议收藏」

    ICE的服务器对象实现「建议收藏」1、需要增加一个类继承至生成的接口类,并实现接口类的虚方法。2、创建实现类的对象3、调用adpater的add方法将创建的对象绑定到adapter中,并传入一个全局唯一标示符,该唯一标示可以通过如下方法生成:  adapter->add(hello,communicator()->stringToIdentity(“hello”));  adapter->addWithUUI

    2022年5月27日
    33
  • 查看sql_mode_mysql命令行执行sql脚本

    查看sql_mode_mysql命令行执行sql脚本1,执行SQL查看select@@session.sql_mode;全局级别:查看select@@global.sql_mode;2,修改set@@session.sql_mode=’xx_mode’setsessionsql_mode=’xx_mode’全局级别:修改setglobalsql_mode=’xx_mode’;set@@global.sql_mode=’xx_mode’;session均可省略,默认session,仅对当前会话有效全局修改的话,

    2022年9月1日
    6
  • creo每次都要配置config_config配置中心

    creo每次都要配置config_config配置中心前言每个测试用例都应该有config部分,可以配置用例级别。比如name、base_url、variables、verify、export等等案例演示fromhttprunnerimport

    2022年7月31日
    4
  • ipynb后缀文件怎么打开「建议收藏」

    ipynb后缀文件怎么打开「建议收藏」ipynb,顾名思义,ipythonnotebook,哦,原来是用ipythonnotebook打开的啊,下面讲讲怎么安装ipythonnotebook(我的环境是win1064位python是2.7版本,如果要问为何是这个版本,我之后给你丢一个神秘的微笑)第一部分:安装ipython1:安装python,这个不说2:安装pip,这个也不说,网上有很多例子,一般装了py…

    2025年6月9日
    4
  • AVI视频文件编码格式不受支持0xc00d5212怎么解决?「建议收藏」

    AVI视频文件编码格式不受支持0xc00d5212怎么解决?「建议收藏」AVI视频格式的优点是图像质量好,但最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频。所以我们在进行一些AVI格式的视频播放时,常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题。今天来讲讲编码格式不受…

    2022年9月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号