pytorch中的Batch_Normlization用法

用法介绍

Batch Normlization的作用就是将这些输入值进行标准化,这样一方面提高梯度的收敛速度,加快模型的训练速度;另一方面使得每一层单元服从同一分布减少了变化带来的不确定性,而且可以缓解训练过程梯度消失的问题。BN具体的数学公式表示为 y = x − E [ x ] V a r [ x ] + ϵ ∗ γ + β y=\frac{x -\mathrm{E}[x]}{\sqrt{\mathrm{Var}[x]+\epsilon}}*\gamma+\beta y=Var[x]+ϵ xE[x]γ+βpytorch中常见的关于BN的实现有两种方法分别是torch.nn.BatchNorm1dtorch.nn.BatchNorm2dtorch.nn.BatchNorm1d表示的是对小批量的2d3d输入进行批BN标准化操作,torch.nn.BatchNorm2d表示的是对小批量3d数据组成的4d输入进行批标准化。它们具体用法如下所示:

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

  • num_features:表示来自输入的特征数,即输入大小的形状可以是batch_size * num_features也可以是batch_size * num_features * width
  • eps:为保证数值稳定性(分母不能趋近或取0,给分母加上的值。默认为1e-5
  • momentum:动态均值和动态方差所使用的动量,其中默认值为0.1
  • affine:当取值为True时,给该层添加可学习的仿射变换参数

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

  • num_features:表示来自输入的特征数,即输入大小的形状可以是batch_size* num_features* height* width
  • eps:为保证数值稳定性(分母不能趋近或取0,给分母加上的值。默认为1e-5
  • momentum:动态均值和动态方差所使用的动量,其中默认值为0.1
  • affine:当取值为True时,给该层添加可学习的仿射变换参数。

代码介绍

torch.nn.BatchNorm1dtorch.nn.BatchNorm2d的代码实例如下所示:

import torch
import torch.nn as nn
BatchNorm1d = nn.BatchNorm1d(100)
BatchNorm2d = nn.BatchNorm2d(100)
input_tensor1 = torch.randn(20, 100)
input_tensor2 = torch.randn(20, 100, 35, 45)
output1 = BatchNorm1d(input_tensor1)
output2 = BatchNorm2d(input_tensor2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值