nn.BatchNorm2D() 详细解析

nn.BatchNorm2D() 主要用于加速神经网络训练,防止协方差偏移,确保数据在各层间有统一的分布。通过调整均值和方差,该操作有助于网络稳定性和梯度传播。适用于多层神经网络的中间层。参数包括num_features(通道数)、epsilon(数值稳定性参数)、momentum(动量参数)等。

nn.BatchNorm2D() 详细解析

paddle.nn.BatchNorm2D(num_features, momentum=0.9, epsilon=1e-05, weight_attr=None, bias_attr=None, data_format='NCHW', name=None):

目的

加速神经网络的收敛过程以及提高训练过程中的稳定性

应用场景

通常用于解决多层神经网络中间层的协方差偏移问题(用了准没错)

行为方式

使一批(Batch)feature map满足均值为0,方差为1的分布规律。这样不仅数据分布一致,而且避免发生梯度消失。

通俗解释

类似于网络输入进行零均值化和方差归一化的操作,不过是在中间层的输入中操作而已。

参数说明

  • num_features (int) - 指明输入 Tensor 的通道数量。
  • epsilon (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。
  • momentum (float, 可选) - 此值用于计算 moving_meanmoving_var 。默认值:0.9。更新公式如上所示。
  • weight_attr (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 cn_api_ParamAttr 。
  • bias_attr (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 cn_api_ParamAttr 。
  • data_format (string, 可选) - 指定输入数据格式,数据格式可以为"NCHW"。默认值:“NCHW”。
  • name (string, 可选) – BatchNorm的名称, 默认值为None。更多信息请参见 Name

代码示例

import paddle
import numpy as np

np.random.seed(123)
x_data = np.random.random(size=(2, 1, 2, 3)).astype('float32')
x = paddle.to_tensor(x_data)
batch_norm = paddle.nn.BatchNorm2D(1)
batch_norm_out = batch_norm(x)

print(batch_norm_out)

输出结果

Tensor(shape=[2, 1, 2, 3], dtype=float32, place=CPUPlace, stop_gradient=False,
       [[[[ 1.15392590, -1.18635142, -1.69183910],
          [-1.61306620, -0.22713995, -0.12097311]]],


        [[[ 1.28710675,  0.09896636,  0.46429396],
          [ 0.10046530,  0.45974565,  1.27486539]]]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值