Batch Normalization的解释

输入的标准化处理是对图片等输入信息进行标准化处理,使得所有输入的均值为0,方差为1

normalize = T.Normalize([0.485, 0.456, 0.406],[0.229, 0.224, 0.225])

而Batch Normalization的目的是使各隐藏层输入的均值和方差为任意值

Batch Norm经常使用在mini-batch上,这也是其名称的由来

Batch Normalization是对下面隐藏层进行激活函数操作前的输入Z[l]进行标准层处理

进行的操作有:

1)对输入进行归一化操作

  • m是单个mini-batch包含样本个数
  •  是为了防止分母为零,可取值 

此时的输入Z[i]变为了均值为0,方差为1的Znorm[i]

2)对归一化的结果进行缩放和平移

但是大部分情况下我们其实并不希望输入均值为0,方差为1,而是希望其根据训练的需要而设置为任意值

这个时候就需要进一步处理:

 和  是可以学习的参数,类似于W和b一样,可以通过梯度下降等算法求得

当两者的值为,那么,实现恒等映射

为什么需要进行这一步的处理:

从激活函数的角度来说,如果各隐藏层的输入均值在靠近0的区域即处于激活函数的线性区域,这样不利于训练好的非线性神经网络,得到的模型效果也不会太好

如resnet网络中的使用:

#这个实现的是两层的残差块,用于resnet18/34
class BasicBlock(nn.Module):
    expansion = 1

    def __init__(self, inplanes, planes, stride=1, downsample=None):
        super(BasicBlock, self).__init__()
        self.conv1 = conv3x3(inplanes, planes, stride)
        self.bn1 = nn.BatchNorm2d(planes)
        self.relu = nn.ReLU(inplace=True)
        self.conv2 = conv3x3(planes, planes)
        self.bn2 = nn.BatchNorm2d(planes)
        self.downsample = downsample
        self.stride = stride

    def forward(self, x):
        identity = x

        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)

        out = self.conv2(out)
        out = self.bn2(out)

        if self.downsample is not None: #当连接的维度不同时,使用1*1的卷积核将低维转成高维,然后才能进行相加
            identity = self.downsample(x)

        out += identity
        out = self.relu(out)

        return out

原文地址:https://www.cnblogs.com/wanghui-garcia/p/10783193.html

时间: 2024-10-09 19:56:56

Batch Normalization的解释的相关文章

Batch Normalization导读

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性.目前几乎已经成为DL的标配了,任何有志于学习DL的同学们朋友们雷迪斯俺的詹特曼们都应该好好学一学BN.BN倒过来看就是NB,因为这个技术确实很NB,虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个经验领先于理论分析的偏

Batch Normalization 学习笔记

原文:http://blog.csdn.net/happynear/article/details/44238541 今年过年之前,MSRA和Google相继在ImagenNet图像识别数据集上报告他们的效果超越了人类水平,下面将分两期介绍两者的算法细节. 这次先讲Google的这篇<Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift>,主要是因为这里面的思想比较

[CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

课程主页:http://cs231n.stanford.edu/ ? Introduction to neural networks -Training Neural Network ______________________________________________________________________________________________________________________________________________________________

Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记

说实话,这篇paper看了很久,,到现在对里面的一些东西还不是很好的理解. 下面是我的理解,当同行看到的话,留言交流交流啊!!!!! 这篇文章的中心点:围绕着如何降低  internal covariate shift 进行的, 它的方法就是进行batch normalization. internal covariate shift 和 batch normalization 1. 什么是 internal covariate shift呢? 简单地理解为一个网络或system的输入的dirs

论文笔记-Batch Normalization

论文题目:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 首先看看博客http://blog.csdn.net/happynear/article/details/44238541中最开始介绍的: 为什么中心化,方差归一化等,可以加快收敛? 补充一点:输入x集中在0周围,sigmoid更可能在其未饱和区域,梯度相对更大一些,收敛更快. Abstract 1.深

Tensorflow Batch normalization函数

Tensorflow Batch normalization函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 stackoverflow上tensorflow实现BN的不同函数的解释 最近在运行程序时需要使用到Batch normalization方法,虽然网上有很多资料,但是说法各异而且没有完全准确的,很多使用了Tensorflow中TF.slim高层封装,自己不是很明白.现在我将自己搜集的资料进行整理,便于以后查阅. 关于Batch normalization Tens

[转] 深入理解Batch Normalization批标准化

转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 郭耀华's Blog 欲穷千里目,更上一层楼项目主页:https://github.com/guoyaohua/ 博客园 首页 新随笔 联系 订阅 管理 欲穷千里目,更上一层楼项目主页:https://github.com/guoyaohua/ 博客园 首页 新随笔 联系 订阅 管理 [深度学习]深入理解Batch Normalization批标准化 这几天面试经常被问到BN层的原理,虽然回答

《RECURRENT BATCH NORMALIZATION》

Covariate 协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响实验结果. whiting : https://blog.csdn.net/elaine_bao/article/details/50890491 <Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift>:https://blog.csdn.net/sinat_

深度学习面试题21:批量归一化(Batch Normalization,BN)

目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 BN在GoogLeNet中的应用 BN的由来 BN是由Google于2015年提出,论文是<Batch Normalization_ Accelerating Deep Network Training by Reducing Internal Covariate Shift>,这是一个深度神经网络训练的技巧,主要是让数据的分布变得一致,从而使得