组归一化

组归一化 - 21

版本

此版本的运算符自版本 21起可用。

摘要

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

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

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

其中均值和方差是针对每个实例每个通道组计算的,并且scalebias应为每个通道指定。组数num_groups应能被通道数C整除,以便每个组的通道数相等。

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

当组数与通道数相同时,此运算符等效于实例归一化。当只有一个组时,此运算符等效于层归一化。

属性

  • 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 in ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型约束为浮点张量。

组归一化 - 18

版本

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

摘要

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

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

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

其中均值和方差是针对每个实例每个通道组计算的,并且scalebias应为每个通道组指定。组数num_groups应能被通道数C整除,以便每个组的通道数相等。

当组数与通道数相同时,此运算符等效于实例归一化。当只有一个组时,此运算符等效于层归一化。

属性

  • 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 in ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) )

    将输入和输出类型约束为浮点张量。