【译】Understanding Batch Normalization with Examples in Numpy and Tensorflow with Interactive Code

因此,今天,我将探讨批量标准化( 批量标准化: 通过 Sergey Ioffe Christian Szegedy 减少内部协变量来加速深度网络培训 )。 但是,为了加强我对数据预处理的理解,我将覆盖3个案例,

案例1 - 规范化 :整体数据(Numpy)
案例2 - 标准化 :整体数据(Numpy)
情况3 - 批量标准化 :微型批量(Numpy / Tensorflow)

**注**我不会在这篇文章中回顾传播!


实验设置

这个实验的设置非常简单。 要模拟真实世界的用例,可以从随机正常分布中创建一个32 * 32图像,并为其添加一些噪声。 以上是我们的形象。

红框 →(图像数量,图像宽度,图像高度,通道数量)现在我们将使用32 * 32灰度图像。
左图 →我们图像数据的直方图

正如您在上面看到的,我们的图像平均值为26,方差为306。左边我们可以看到图像数据的直方图。


情况1:标准化 - 整体数据

对于我们的第一种情况,我们可以对整个数据集进行标准化。 从视觉上看,我们可以观察到没有区别。

但是,一旦我们绘制直方图或查看均值和标准差,我们可以清楚地看到我们的数据在0和1的范围内。


案例2:标准化 - 整体数据

再一次,从视觉上看,我看不出有什么不同。

但是,当我们看到直方图的轴时,我们可以清楚地看到,我们的数据的均值已经移到0(几乎),方差是1。


标准化/标准化方程式

来自这个网站的图片

左→方程式进行归一化
→标准化等式

以防万一,如果有人想知道,让我们回顾一下正常化和标准化的情况。 请注意, μ是平均值, σ是标准偏差。


批量标准化等式

红框→用于标准化的等式
蓝线→要学习的参数

现在我们已经涉及了规范化和标准化,我们可以看到批量规范化的公式与标准化的过程完全相同。 唯一的区别是gamma和beta术语,用蓝色下划线。 我们可以将这些术语看作完全像权重,我们将根据地面实况数据计算误差,并使用反向传播学习这些参数。

但有一件事我想注意! 如果我们设置伽玛(谢谢 洛阳方 纠正我为1,贝塔值为0,那么整个过程就是标准化。 而对于Tensorflow的实施,我们将滥用这个属性。


案例3:批量标准化 - 纯粹实施

红线 →迷你批次,从我们的图像数据的前10个图像
蓝框 →数据标准化

这里有一点需要注意,对于批量标准化,我们将从我们的测试数据中获取前10个图像并应用批量标准化。

再次,我们可以看到平均值在0左右,方差为1.现在让我们来看看张量流的实现。


情况3:批量标准化 - Tensorflow

红线 →迷你批次,从我们的图像数据的前10个图像
蓝线→偏移(Beta)为0,缩放(Gamma)为1

再一次,在视觉上,我们看不出任何区别。

但是,如果我们看一下数据的均值和方差,我们可以看到它与应用标准化完全相同


交互式代码(Google Collab / Replit / Microsoft Azure Notebook)

对于Google Colab,您需要一个Google帐户才能查看代码,并且您无法在Google Colab中运行只读脚本,因此请在游戏场地上制作副本。 最后,我绝不会要求获得在Google云端硬盘上访问您的文件的权限,仅供参考。 快乐编码!

要访问Google Colab上的代码, 请点击此处
要访问Repl上的代码, 请点击此处
要访问Microsoft Azure Notebook上的代码, 请点击此处


最后的话

最近Face book AI研究小组正式发布。 吴宇欣 何凯明 组织的标准化 )我会尽力掩盖这一点。

如果发现任何错误,请发送电子邮件至jae.duk.seo@gmail.com,如果您希望查看我所有写作的列表,请在此处查看我的网站

同时在我的twitter上跟随我,访问我的网站或我的Youtube频道获取更多内容。 如果您有兴趣,我也在这里比较了解耦神经网络。


参考

  1. CS231n 2016年冬季:第5讲:神经网络第2部分(2018年)。 YouTube上。 检索2018年3月19日,从https://www.youtube.com/watch?v=gYpoJMlgyXA&feature=youtu.be&list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC&t=3078
  2. Thorey,C。(2016)。 通过批量标准化的梯度是什么样的? Cthorey.github.io。 检索于2018年3月19日,来自http://cthorey.github.io/backpropagation/
  3. 批量范数Backprop方程的导出| Chris Yeh。 (2018)。 Chrisyeh96.github.io。 检索于2018年3月19日,来自https://chrisyeh96.github.io/2017/08/28/deriving-batchnorm-b​​ackprop.html
  4. 导出批量归一化后向梯度的梯度。 (2018)。 Kevinzakka.github.io。 检索于2018年3月19日,来自https://kevinzakka.github.io/2016/09/14/batch_normalization/
  5. Kratzert,F。(2018)。 了解向后传递批处理标准化层。 Kratzert.github.io。 检索2018年3月19日,从https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.html
  6. (2018)。 Arxiv.org。 检索于2018年3月19日,来自https://arxiv.org/pdf/1502.03167.pdf
  7. numpy.histogram - NumPy v1.13手册。 (2018)。 Docs.scipy.org。 检索于2018年3月19日,来自https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.histogram.html
  8. numpy.random.weibull - NumPy v1.13手册。 (2018)。 Docs.scipy.org。 检索于2018年3月19日,来自https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.weibull.html#numpy.random.weibull
  9. numpy.var - NumPy v1.14手册。 (2018)。 Docs.scipy.org。 检索于2018年3月26日,来自https://docs.scipy.org/doc/numpy/reference/generated/numpy.var.html
  10. 资料?,H。(2018)。 如何使用Python中的Matplotlib绘制一个直方图并列出数据? Stackoverflow.com。 检索2018年3月26日,从https://stackoverflow.com/questions/33203645/how-to-plot-a-histogram-using-matplotlib-in-python-with-a-list-of-data
  11. numpy.random.randn - NumPy v1.14手册。 (2018)。 Docs.scipy.org。 检索于2018年3月27日,来自https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html
  12. Wu,Y.,&He,K。(2018)。 组标准化。 Arxiv.org。 检索于2018年3月27日,来自https://arxiv.org/abs/1803.08494
  13. 标准化与标准化| 数据挖掘博客 - www.dataminingblog.com (2007年)。 Dataminingblog.com。 检索于2018年3月27日,来自http://www.dataminingblog.com/standardization-vs-normalization/
  14. Ioffe,S.,&Szegedy,C。(2015)。 批量标准化:通过减少内部协变量来加速深度网络培训。 Arxiv.org。 检索于2018年3月27日,来自https://arxiv.org/abs/1502.03167
  15. 正态分布。 (2018)。 Mathsisfun.com。 检索于2018年3月27日,来自https://www.mathsisfun.com/data/standard-normal-distribution.html

https://towardsdatascience.com/understanding-batch-normalization-with-examples-in-numpy-and-tensorflow-with-interactive-code-7f59bb126642
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值