GroupNormalization

GroupNormalization - 21

版本

此版本的操作符自 版本 21 起可用。

摘要

一个 GroupNormalization 函数。执行论文 https://arxiv.org/abs/1803.08494 中描述的组归一化。

此运算符根据以下公式转换输入:

y = scale * (x - mean) / sqrt(variance + epsilon) + bias,

其中均值和方差是按每个实例和每组通道计算的,并且 scalebias 应该为每个通道指定。组数 num_groups 应该可以被通道数整除,以确保每组有相同数量的通道。

整个计算分为两个阶段:第一阶段将每个实例在每个组中的元素归一化,使其具有零均值和单位方差,第二阶段对第一阶段的结果进行缩放和偏移。第一阶段使用的浮点精度由 stash_type 属性决定。例如,如果 stash_type 为 1,则运算符将所有输入变量转换为 32 位浮点数,执行计算,最后将归一化结果转换回 X 的原始类型。第二阶段不依赖于 stash_type

当组数与通道数相同时,此运算符等同于 InstanceNormalization。当只有一个组时,此运算符等同于 LayerNormalization。

属性

  • epsilon - FLOAT (默认为 '1e-05')

    用于避免除以零的 epsilon 值。

  • num_groups - INT (必需)

    通道组的数量。它应该是通道数 C 的一个除数。

  • stash_type - INT (默认为 '1')

    计算第一阶段使用的浮点精度。

输入

  • X (异构) - T

    输入数据张量。对于图像情况,维度为 (N x C x H x W),其中 N 是批大小,C 是通道数,HW 是数据的高度和宽度。统计数据是针对 CHW 上每组通道计算的。对于非图像情况,维度形式为 (N x C x D1 x D2 ... Dn)

  • scale (异构) - T

    形状为 (C) 的缩放张量。

  • bias (异构) - T

    形状为 (C) 的偏置张量。

输出

  • Y (异构) - T

    X 形状相同的输出张量。

类型约束

  • T 在 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型限制为浮点张量。

GroupNormalization - 18

版本

此版本的运算符已于版本 18 起弃用。

摘要

一个 GroupNormalization 函数。执行论文 https://arxiv.org/abs/1803.08494 中描述的组归一化。

此运算符根据以下公式转换输入:

y = scale * (x - mean) / sqrt(variance + epsilon) + bias,

其中均值和方差是按每个实例和每组通道计算的,并且 scalebias 应该为每组通道指定。组数 num_groups 应该可以被通道数整除,以确保每组有相同数量的通道。

当组数与通道数相同时,此运算符等同于 InstanceNormalization。当只有一个组时,此运算符等同于 LayerNormalization。

属性

  • epsilon - FLOAT (默认为 '1e-05')

    用于避免除以零的 epsilon 值。

  • num_groups - INT (必需)

    通道组的数量。它应该是通道数 C 的一个除数。

输入

  • X (异构) - T

    输入数据张量。对于图像情况,维度为 (N x C x H x W),其中 N 是批大小,C 是通道数,HW 是数据的高度和宽度。统计数据是针对 CHW 上每组通道计算的。对于非图像情况,维度形式为 (N x C x D1 x D2 ... Dn)

  • scale (异构) - T

    形状为 (num_groups) 的缩放张量。

  • bias (异构) - T

    形状为 (num_groups) 的偏置张量。

输出

  • Y (异构) - T

    X 形状相同的输出张量。

类型约束

  • T 在 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型限制为浮点张量。