TensorFlow实现Batch Normalization详解和代码实现

批量归一化(Batch Normalization)有助于神经网络学习,通过标准化数据,减少内部协变量转移,提高训练速度。本文介绍了BN的原理,展示了在TensorFlow中实现BN的实例,解释了其对数据分布的影响,并通过比较有无BN的情况,强调了BN在保持信息传递中的重要作用。
摘要由CSDN通过智能技术生成

为什么我们要进行标准化?

具有统一规格的数据更方便神经网络学习到数据的规律。

举个非常简单的例子。假设我们的激活函数是f(x)=tanh,输入数据x从-10到10。如下图所示:

加上标准化工序后,x被调整到[-1,1],那么with和without标准化工序的数据输入之后,输出响应分布也大不相同:

没有normalize的数据,使用 tanh 激活以后, 激活值大部分都分布到了饱和阶段, 也就是大部分的激活值不是-1, 就是1。而normalize 以后, 大部分的激活值在每个分布区间都还有存在。再将这个激活后的分布传递到下一层神经网络进行后续计算, 每个区间都有分布的这一种对于神经网络就会更加有价值。

BN算法:

Batch Normalization 的公式,这三步就是我们在刚刚一直说的 normalization 工序。 但是公式的后面还有一个反向操作:normalize 后的数据再扩展和平移!神经网络能够自己去学着使用和修改这个扩展参数 gamma, 和平移参数 β, 慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 就使用 gamma 和 belt 来抵消一些 normalization 的操作。

TensorFlow实现Batch Normalization 实例

假设我们要拟合一批数据(实际是一元二次方程曲线),输入x的范围是[-7,10]:

假设有7层神经网络,激活函数使用ReLU。即输入小于0时输出为0,输入大于0时呈线性增长。

在有/无标准化的两种情况下,每一层神经网络的输入数据情况:

相应的输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值