首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Keras/TensorFlow BatchNormalization正在规范什么?

Keras/TensorFlow BatchNormalization正在规范什么?
EN

Stack Overflow用户
提问于 2017-11-15 16:45:29
回答 1查看 1.4K关注 0票数 4

我的问题是BatchNormalization (BN)是如何标准化的。

我要问的是,BN是否分别对每个像素的通道进行规范化,还是将所有像素合并在一起。它是在每个图像的基础上,还是在整个批处理的所有通道上进行的。

具体来说,BN是在X上运营的。比如说,X.shape = [m,h,w,c]。因此,对于axis=3,它是在"c“维度上操作的,即通道数(对于rgb)或功能映射数。

因此,假设X是一个rgb,因此有3个通道。BN是否做了以下工作:(这是BN的简化版本,用于讨论维度方面。我知道伽马和贝塔是学习的,但这里并不关心。)

对于m中的每个m

  1. 对于每个像素(h,w),取相关的r、g、&b值的平均值。
  2. 对于每个像素(h,w),取相关的r、g、&b值的方差。
  3. Do r = (r-mean)/varg = (g-mean)/var,& b = (b-mean)/var,其中r,g,&b分别是X的红、绿、蓝通道。
  4. 然后对m中的下一个图像重复此过程,

在keras中,BatchNormalization的文档说:

轴:整数,应该标准化的轴(通常是特征轴)。 例如,在Conv2D层使用data_format="channels_first"之后,在BatchNormalization中设置axis=1

但是它在每个维度到底在做什么呢?

EN

回答 1

Stack Overflow用户

发布于 2017-12-06 15:47:58

首先,有几种方法可以应用于批量归一化,甚至在原纸中有专门针对卷积神经网络的方法。参见这个问题中的讨论,其中概述了通常的BN和卷积BN之间的区别,以及这两种方法之所以有意义的原因。

特别是keras.layers.BatchNormalization实现了卷积BN,这意味着对于输入[m,h,w,c],它计算跨m*h*w值的c均值和标准差。运行均值、运行std、伽马和贝塔变量的形状只是(c,)。空间维度(像素)以及批处理的值都是共享的

因此,一个更精确的算法是:对于每个R、G和B通道,计算该通道中所有像素和所有图像的均值/方差,并应用归一化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47312922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档