2025-10-24
点 赞
0
热 度
7
评 论
0

Pytorch正则化(BatchNorm2d)篇

  1. 首页
  2. 深度学习
  3. Pytorch正则化(BatchNorm2d)篇

1.正则化的作用

正则化可以加速神经网络训练过程中的收敛速度,同时提高模型的泛化能力。根据 BathNorm2d 的计算公式:y=\frac{x-E[x]}{\sqrt{Var(x)+ε}}*γ+β,不难得知,BatchNorm2d 其实就是一个标准化公式,其中γ和β是大小为输入通道数(BatchNorm2d 的参数 num_features)的可学习参数向量。

2.参数

BatchNorm2d 参数如下:

class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)

有趣的是 BatchNorm2d 是针对 4D 输入的,但是这个 4D 又比较反直觉,此处的 4D 是指张量 (tensor) 有四维的 shape,即 batch_size、channel、H 和 W,其本质还是一个二维的图像,但是增加了 batch_size 和 channel 两个参数共同组成一个四维的 tensor,此处的 num_features 就是指 channel 数。

剩余的参数一般来说并不需要另行设置,其中 eps 是添加到分母中的值(即ε),用于保持数值的稳定。

momentum 用于计算运行中的均值和方差的平滑系数(这个解释比较奇怪,根据官方文档它可以用于参数量的估计,公式为\hat{x}_{new}=(1-momentum)*\hat{x}+momentum*x_t

affine 参数为 True 时,BatchNorm2d 层将具有可学习的放射参数,其公式为:y=\gamma*\hat{x}+\beta

track_running_stats 为 True 时,BatchNorm2d 将会跟踪运行均值和方差,为 False 时缓冲区的均值和方差将会置为 None

值得一提的是 BatchNorm2d 是难得的输入输出的形状(shape 参数)相同的层


我自己用的账号

enfj 主人公

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。

目录

欢迎来到Henry的站点,为您导航全站动态

18 文章数
4 分类数
1 评论数
5标签数