batch_norm

    批正则化层(Batch Normalization Layer)

    可用作卷积和全连接操作的批正则化函数,根据当前批次数据按通道计算的均值和方差进行正则化。该层需要的数据格式如下:

    1.NHWC[batch,in_height,in_width,in_channels] 2.NCHW[batch,in_channels,in_height,in_width]

    更多详情请参考 :

    input 是mini-batch的输入。

    moving_mean和moving_var是训练过程中统计得到的全局均值和方差,在预测或者评估中使用。 is_test 参数只能用于测试或者评估阶段,如果想在训练阶段使用预训练模型的全局均值和方差的话,可以设置 use_global_stats=True.

    当use_global_stats = True时,

    batch_norm - 图1

    不是一个minibatch的统计数据。 它们是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。训练和测试(或预测)具有相同的行为:

    参数:

    • input (Tensor) - batch_norm算子的输入特征,是一个Tensor类型,输入维度可以是 2, 3, 4, 5。数据类型:flaot16, float32, float64。

    • act (string)- 激活函数类型,可以是leaky_realu、relu、prelu等。默认:None。

    • is_test (bool) - 指示它是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认:False。

    • momentum (float|Tensor)- 此值用于计算 moving_mean 和 moving_var,是一个float类型或者一个shape为[1],数据类型为float32的Tensor类型。更新公式为:

      batch_norm - 图2

    • param_attr (ParamAttr|None) :指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 ParamAttr 。batch_norm算子默认的权重初始化是1.0。

    • bias_attr (ParamAttr|None)- 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 。batch_norm算子默认的偏置初始化是0.0。

    • data_layout (string) - 指定输入的数据格式,输出的数据格式将与输入保持一致,可以是”NCHW”和”NHWC”。N是批尺寸,C是通道数,H是特征高度,W是特征宽度。默认值:”NCHW”。

    • in_place (bool)- batch_norm的输出复用输入的tensor,可以节省显存。默认:False。

    • moving_mean_name (string)- moving_mean的名称,存储全局均值。如果将其设置为None, 将随机命名全局均值;否则, batch_norm 将命名全局均值为 。默认:None。

    • moving_variance_name (string)- moving_variance的名称,存储全局变量。如果将其设置为None, batch_norm 将随机命名全局方差;否则, 将命名全局方差为 moving_variance_name 。默认:None。

    • do_model_average_for_mean_and_var (bool,默认False)- 是否为mean和variance做模型均值。

    • use_global_stats (bool) – 是否使用全局均值和方差。 在预测或测试模式下,将use_global_stats设置为true或将is_test设置为true,并且行为是等效的。 在训练模式中,当设置use_global_stats为True时,在训练期间也使用全局均值和方差。默认:False。

    代码示例