Batch Normanlization简称BN,也就是数据归一化,对深度学习模型性能的提升有很大的帮助。BN的原理可以查阅我之前的一篇博客。白话详细解读(七)----- Batch Normalization。但为了该篇博客的完整性,在这里简单介绍一下BN。

一、BN的原理

BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。BN具体操作流程如下图所示:

二、nn.BatchNorm2d()方法详解

清楚了BN的原理之后,便可以很快速的理解这个方法了。

  • 方法
torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
  • Parameters

    num_features:图像的通道数,也即(N, C, H, W)中的C的值

    eps:增加至分母上的一个很小的数,为了防止/0情况的发生

    momentum:用来计算平均值和方差的值,默认值为0.1

    affine:一个布尔类型的值,当设置为True的时候,该模型对affine参数具有可学习的能力,默认为True

    track_running_stats:一个布尔类型的值,用于记录均值和方差,当设置为True的时候,模型会跟踪均值和方差,反之,不会跟踪均值和方差

  • Shape

    Input: (N, C, H, W)
    Output: (N, C, H, W)

三、案例分析

import torch.nn as nn
import torch
if __name__ == '__main__':bn = nn.BatchNorm2d(3)ip = torch.randn(2, 3, 2, 2)print(ip)output = bn(ip)print(output)
  • 运行结果

PyTorch基础(12)-- torch.nn.BatchNorm2d()方法相关推荐

  1. python batchnorm2d_Python nn.BatchNorm2d方法代碼示例

    本文整理匯總了Python中torch.nn.BatchNorm2d方法的典型用法代碼示例.如果您正苦於以下問題:Python nn.BatchNorm2d方法的具體用法?Python nn.Batc ...

  2. PyTorch中的torch.nn.Parameter() 详解

    PyTorch中的torch.nn.Parameter() 详解 今天来聊一下PyTorch中的torch.nn.Parameter()这个函数,笔者第一次见的时候也是大概能理解函数的用途,但是具体实 ...

  3. Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化

    Pytorch 学习(6):Pytorch中的torch.nn  Convolution Layers  卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...

  4. PyTorch基础(13)-- torch.nn.Unfold()方法

    前言 最近在看新论文的过程中,发现新论文中的代码非常简洁,只用了unfold和fold方法便高效的将论文的思想表达出,因此学习记录一下unfold和fold方法. 一.方法详解 方法 torch.nn ...

  5. PyTorch基础(七)----- torch.nn.AdaptiveAvgPool2d()方法

    一.方法简介 方法 含义:对张量应用一个自适应的平均池化,只需要输入输出的size即可. - torch.nn.AdaptiveAvgPool2d(output_size) 参数及注意事项 - 1.o ...

  6. pytorch笔记:torch.nn.functional.pad

    1 torch.nn.functional.pad函数 torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充 torch. ...

  7. pytorch笔记:torch.nn.Threshold

    1 使用方法 torch.nn.Threshold(threshold, value, inplace=False) 对输入进Threshold的Tensor进行阈值操作 2 使用举例 import ...

  8. pytorch WHAT IS TORCH.NN REALLY?

    手动创建神经网络 import torch import torch.nn as nnfrom pathlib import Path import requests import pickle im ...

  9. pytorch基础-使用 TORCH.AUTOGRAD 进行自动微分(5)

    在训练神经网络时,最常用的算法是反向传播.PyTorch的反向传播(即tensor.backward())是通过autograd包来实现的,autograd包会根据tensor进行过的数学运算来自动计 ...

最新文章

  1. Android源码下载总结
  2. linux和windows接口中文乱码_使用jmeter进行接口自动化实例
  3. 第二篇:Mysql---约束条件、修改表的结构、键值
  4. cephfs 挂载 卸载
  5. lua windows下编译
  6. LAMP结构-访问日志
  7. SAP Enable Now
  8. VS Code 代码格式化
  9. matlab好看的字体,最佳50个新鲜+漂亮的字体(2011)
  10. 在我的世界修改服务器吗 名字,我的世界怎么改名字
  11. 光机电一体化控制实训装置QY-JDYT06
  12. RAID磁盘阵列管理
  13. xp计算机连接不上网络打印机驱动,windows xp系统打印机共享提示连接失败的解决方法...
  14. Java实现 蓝桥杯 算法训练 Balloons in a Box
  15. rest接口访问webService soap接口 用XStream javabean和xml的互转
  16. lj245a引脚功能图_急,谁能提供给我74ls245的功能说明和引脚图,谢谢了
  17. idea项目总是自动重启_IDEA 下 SpringBoot 自动重启
  18. 第三方能查到我们的微信聊天记录?
  19. 比利时研制全息图像电视 可取代现有3D技术
  20. OA系统开发--springAOP理解

热门文章

  1. sizeof计算类的大小
  2. golang第三方日志包seelog配置文件详解
  3. dedecms原理及使用
  4. k8s通过label来控制pod的位置
  5. 虚拟机安装Ubuntu过程记录
  6. JavaScript权威指南--客户端存储
  7. 【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用
  8. 【Spring】Spring MVC文件上传--整合bootstrap-fileinput和jQuery-File-Upload
  9. volatile 关键字
  10. 求两个数集的并集C++代码实现