Pytorch学习笔记-06 Normalization layers

简介: Pytorch学习笔记-06 Normalization layers

Why Normalization


Internal Covariate Shift (ICS):数据尺度 分布异常,导致训练困难


Batch Normalization


Batch Normalization :批标准化

批:一批数据,通常为 mini batch


《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 》

优点:


可以 用 更大学习率,加速模型收敛

可以 不用 精心设计权值初始化

可以 不用 dropout 或较小的 dropout

可以 不用 L2 或者较小的 weight decay

可以 不用 LRN(local response normalization)

_

BatchNorm

nn.BatchNorm1d

nn.BatchNorm2d

nn.BatchNorm3d

参数:


num_features :一个样本特征数量(最重要

e p s :分母修正项

momentum :指数加权平均估计当前 mean/ var

affine :是否需要 affine transform

track_running_stats :是训练状态,还是测试状态


Layer Normalization


起因:

BN 不适用于变长的网络,如 RNN

思路:

逐层 计算均值和方差


注意事项:

不再有 running_mean 和 running_var


gamma 和 beta 为逐元素的


主要参数:


normalized_shape :该层特征形状


eps :分母修正项


elementwise_affine :是否需要 affine


transform


Instance Normalization


起因:

BN 在图像生成( Image Generation )中不适用

思路:

逐 Instance channel 计算均值和方差


主要参数:


num_features :一个样本特征数量(最重要

eps :分母修正项

momentum :指数加权平均估计当前 mean/ var

affine :是否需要 affine transform

track_running_stats :是训练状态,还是测试状态


Group Normalization


起因:小batch 样本中, BN 估计的值不准

思路:数据不够,通道来凑


注意事项:


不再有 running_mean 和 running_var


gamma 和 beta 为逐通道( channel )的

应用场景:大模型(小batch size )任务


小结


BN 、 LN 、 IN 和 GN 都是为了克服 Internal Covariate Shift (ICS)


目录
打赏
0
0
0
0
8
分享
相关文章
Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换
这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。
75 0
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
627 2
Pytorch学习笔记(八):nn.ModuleList和nn.Sequential函数详解
PyTorch中的nn.ModuleList和nn.Sequential函数,包括它们的语法格式、参数解释和具体代码示例,展示了如何使用这些函数来构建和管理神经网络模型。
334 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
642 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
208 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
PyTorch中的`nn.AdaptiveAvgPool2d()`函数用于实现自适应平均池化,能够将输入特征图调整到指定的输出尺寸,而不需要手动计算池化核大小和步长。
370 1
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
这篇博客文章详细介绍了PyTorch中的nn.MaxPool2d()函数,包括其语法格式、参数解释和具体代码示例,旨在指导读者理解和使用这个二维最大池化函数。
271 0
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
本文介绍了PyTorch中的BatchNorm2d模块,它用于卷积层后的数据归一化处理,以稳定网络性能,并讨论了其参数如num_features、eps和momentum,以及affine参数对权重和偏置的影响。
461 0
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
Pytorch学习笔记(二):nn.Conv2d()函数详解
这篇文章是关于PyTorch中nn.Conv2d函数的详解,包括其函数语法、参数解释、具体代码示例以及与其他维度卷积函数的区别。
570 0
Pytorch学习笔记(二):nn.Conv2d()函数详解
Pytorch学习笔记(一):torch.cat()模块的详解
这篇博客文章详细介绍了Pytorch中的torch.cat()函数,包括其定义、使用方法和实际代码示例,用于将两个或多个张量沿着指定维度进行拼接。
213 0
Pytorch学习笔记(一):torch.cat()模块的详解
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等