tensorflow中使用Batch Normalization

在深度学习中为了提高训练速度,经常会使用一些正正则化方法,如L2、dropout,后来Sergey Ioffe 等人提出Batch Normalization方法,可以防止数据分布的变化,影响神经网络需要重新学习分布带来的影响,会降低学习速率,训练时间等问题。提出使用batch normalization方法,使输入数据分布规律保持一致。实验证明可以提升训练速度,提高识别精度。下面讲解一下在Tensorflow中如何使用Batch Normalization

有关Batch Normalization详细内容请查看论文:

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

关键函数

tf.layers.batch_normalization、tf.contrib.layers.batch_norm

这两个函数用法一致,以 tf.layers.batch_normalization 为例进行讲解

layer1_conv = tf.layers.batch_normalization(layer1_conv,axis=0,training=in_training)

其中 axis 参数表示沿着哪个轴进行正则化,一般而言Tensor是[batch, width_x, width_y, channel],如果是[width_x, width_y, channel,batch]则axis应该设为3

1 在训练阶段

训练的时候需要注意两点,(1)输入参数training=True,(2)计算loss时,要添加以下代码(即添加update_ops到最后的train_op中)。这样才能计算μ和σ的滑动平均(测试时会用到)

 update_op = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
  with tf.control_dependencies(update_op):
    train_op = optimizer.minimize(loss)

2 在测试阶段

测试时需要注意一点,输入参数training=False,

原文地址:https://www.cnblogs.com/zhaopengcheng/p/8994375.html

时间: 2024-11-03 05:22:22

tensorflow中使用Batch Normalization的相关文章

在tensorflow中使用batch normalization

问题 训练神经网络是一个很复杂的过程,在前面提到了深度学习中常用的激活函数,例如ELU或者Relu的变体能够在开始训练的时候很大程度上减少梯度消失或者爆炸问题,但是却不能保证在训练过程中不出现该问题,例如在训练过程中每一层输入数据分布发生了改变了,那么我们就需要使用更小的learning rate去训练,这一现象被称为internal covariate shift,Batch Normalization能够很好的解决这一问题.目前该算法已经被广泛应用在深度学习模型中,该算法的强大至于在于: 可

Pytorch中的Batch Normalization操作

之前一直和小伙伴探讨batch normalization层的实现机理,作用在这里不谈,知乎上有一篇paper在讲这个,链接 这里只探究其具体运算过程,我们假设在网络中间经过某些卷积操作之后的输出的feature map的尺寸为4×3×2×2 4为batch的大小,3为channel的数目,2×2为feature map的长宽 整个BN层的运算过程如下图 上图中,batch size一共是4, 对于每一个batch的feature map的size是3×2×2 对于所有batch中的同一个cha

Tensorflow Batch normalization函数

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

深度学习中batch normalization

目录 1  Batch Normalization笔记 1.1  引包 1.2  构建模型: 1.3  构建训练函数 1.4  结论 Batch Normalization笔记 我们将会用MNIST数据集来演示这个batch normalization的使用, 以及他所带来的效果: 引包 import tensorflow as tf import os from tensorflow.examples.tutorials.mnist import input_data from tensorf

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

Tensorflow中使用CNN实现Mnist手写体识别

本文参考Yann LeCun的LeNet5经典架构,稍加ps得到下面适用于本手写识别的cnn结构,构造一个两层卷积神经网络,神经网络的结构如下图所示: 输入-卷积-pooling-卷积-pooling-全连接层-Dropout-Softmax输出 第一层卷积利用5*5的patch,32个卷积核,可以计算出32个特征.然后进行maxpooling.第二层卷积利用5*5的patch,64个卷积核,可以计算出64个特征.然后进行max pooling.卷积核的个数是我们自己设定,可以增加卷积核数目提高

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 ______________________________________________________________________________________________________________________________________________________________