Machine learning Keras/TensorFlow批次标准化正在标准化什么

Machine learning Keras/TensorFlow批次标准化正在标准化什么,machine-learning,tensorflow,keras,conv-neural-network,batch-normalization,Machine Learning,Tensorflow,Keras,Conv Neural Network,Batch Normalization,我的问题是什么被BatchNormalization(BN)规范化了 我在问,BN是分别对每个像素的通道进行规格化还是对所有像素一起进行规格化。它是在每张图像的基础上还是在整个批次的所有通道上进行 具体而言,BN在X上运行。比如说,X.shape=[m,h,w,c]。因此,当轴=3时,它在“c”维度上运行,即通道数(对于rgb)或特征图数 假设X是rgb,因此有3个通道。BN是否做了以下工作:(这是BN的一个简化版本,用于讨论维度方面。我知道gamma和beta是学习过的,但这里不涉及。) 对于

我的问题是什么被BatchNormalization(BN)规范化了


我在问,BN是分别对每个像素的通道进行规格化还是对所有像素一起进行规格化。它是在每张图像的基础上还是在整个批次的所有通道上进行

具体而言,BN在
X
上运行。比如说,
X.shape=[m,h,w,c]
。因此,当轴=3时,它在“c”维度上运行,即通道数(对于rgb)或特征图数

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

对于
m
中的每个
image=X

  • 对于每个像素(h、w),取相关r、g和b值的平均值
  • 对于每个像素(h、w),取相关r、g和b值的方差
  • Do
    r=(r-mean)/var
    g=(g-mean)/var
    ,&
    b=(b-mean)/var
    ,其中r、g和b分别是
    X
    的红色、绿色和蓝色通道
  • 然后对
    m
    中的下一幅图像重复此过程
  • 在keras中,BatchNormalization的文档说明:

    轴:整数,应规格化的轴(通常为特征轴)

    例如,在带有
    数据\u format=“channels\u first”
    Conv2D
    层之后, 在
    BatchNormalization
    中设置
    axis=1


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

    首先,有几种方法可以应用批量标准化,这些方法甚至在专门针对卷积神经网络的文章中提到过。请参阅中的讨论,其中概述了普通BN和卷积BN之间的区别,以及两种方法都有意义的原因

    具体实现卷积BN,这意味着对于输入
    [m,h,w,c]
    它计算
    c
    均值和
    m*h*w
    值之间的标准偏差。运行平均值、运行std dev和gamma及beta变量的形状只是
    (c,)
    。跨空间维度(像素)的值以及跨批的值是共享的


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

    BN的工作原理基本上是这样的。我不明白这个问题。我在问,BN是分别对每个像素的通道进行规格化,还是对所有像素一起进行规格化。它是在每幅图像的基础上还是在整个批次的所有通道上进行。对于每个像素,分别在批次中进行归一化,以便每个批次中每个像素的平均值和stddev分别为0和1。