莫烦课程Batch Normalization 批标准化

 for i in range(N_HIDDEN):               # build hidden layers and BN layers
            input_size = 1 if i == 0 else 10
            fc = nn.Linear(input_size, 10)
            setattr(self, ‘fc%i‘ % i, fc)       # IMPORTANT set layer to the Module
            self._set_init(fc)                  # parameters initialization
            self.fcs.append(fc)
            if self.do_bn:
                bn = nn.BatchNorm1d(10, momentum=0.5)
                setattr(self, ‘bn%i‘ % i, bn)   # IMPORTANT set layer to the Module
self.bns.append(bn)

上面的代码对每个隐层进行批标准化,setattr(self, ‘fc%i‘ % i, fc)作用相当于self.fci=fc

每次生成的结果append到bns的最后面,结果的size 10×10,取出这些数据是非常方便

def forward(self, x):
        pre_activation = [x]
        if self.do_bn: x = self.bn_input(x)     # input batch normalization
        layer_input = [x]
        for i in range(N_HIDDEN):
            x = self.fcs[i](x)
            pre_activation.append(x)
            if self.do_bn: x = self.bns[i](x)   # batch normalization
            x = ACTIVATION(x)
            layer_input.append(x)
        out = self.predict(x)
return out, layer_input, pre_activation

全部的源代码

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

莫烦课程Batch Normalization 批标准化的相关文章

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

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

tensorflow批标准化

批标准化(batch normalization,BN)是为了克服神经网络层数加深导致难以训练而产生的. 统计机器学习中的ICS理论(Internal Covariate Shift)理论:源域和目标域的数据分布是一样的.即训练数据和测试数据是满足相同分布的.Covariate Shift是指训练集的样本数据和目标样本集之间分布不一致时,训练得到的模型不能更好的泛化(generalization). 解决的思路是根据训练样本和目标样本的比例对训练样本做一个矫正.因此,通过批规范化固定某些层或者所

[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

1.Batch Normalization的引入 在机器学习领域有个很重要的假设:IID独立同分布假设,也就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集上获得好的效果的一个基本保障.在深度学习网络中,后一层的输入是受前一层的影响的,而为了方便训练网络,我们一般都是采用Mini-Batch SGD来训练网络的(Mini-Batch SGD的两个优点是:梯度更新方向更准确和并行计算速度快). 我们知道在神经网络训练开始前,都要对输入数据做一个归一化处理,那么具体为

深度学习面试题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>,这是一个深度神经网络训练的技巧,主要是让数据的分布变得一致,从而使得

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

CS231n笔记4-Data Preprocessing, Weights Initialization与Batch Normalization

Data Preprocessing, Weights Initialization与Batch Normalization Data Preprocessing Weights Initialization与Batch Normalization 数据预处理Data Preprocessing 权重初始化Weights Initialization 让权重初始化为0 0方差1e-2标准差 0方差1标准差 Xavier Initialization 再改进 批归一化Batch Normaliza

Batch Normalization

前言: Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果. 众所周知,深度学习是应用随机梯度下降法对网络进行训练,尽管随机梯度下降训练神经网络非常有效,但是它有一个缺点,就是需要人为的设定很多参数,比如学习率,权重衰减系数,Dropout比例等.这些参数的选择对训练结果至关重要,以至于训练的大多数精力都耗费在了调参上面.BN算法就可以完美的解决这些问题.当我们使用了BN算法,我们可以去选择比较大的初始学习率,这

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)