BatchNormalization¶
BatchNormalization - 15¶
版本¶
域:
main
起始版本:
15
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自版本 15 起可用。
摘要¶
根据论文 https://arxiv.org/abs/1502.03167 中描述的方法进行批归一化。根据运行模式,有五个必需的输入:'X'、'scale'、'B'、'input_mean' 和 'input_var'。请注意,在推理模式(training_mode=False,默认)下,'input_mean' 和 'input_var' 预期为估计统计量,在训练模式(training_mode=True)下为运行统计量。输出的数量有多种情况,如下所示:
输出情况 #1: Y, running_mean, running_var (training_mode=True)
输出情况 #2: Y (training_mode=False)
当 training_mode=False 时,额外输出无效。当 training_mode=True 时,输出更新如下:
running_mean = input_mean * momentum + current_mean * (1 - momentum)
running_var = input_var * momentum + current_var * (1 - momentum)
Y = (X - current_mean) / sqrt(current_var + epsilon) * scale + B
其中
current_mean = ReduceMean(X, axis=all_except_channel_index)
current_var = ReduceVar(X, axis=all_except_channel_index)
请注意,ReduceVar
指的是总体方差,它等于 sum(sqrd(x_i - x_avg)) / N
,其中 N
是总体大小(此公式不使用样本大小 N - 1
)。
ReduceMean 和 ReduceVar 的计算使用浮点数,以避免 float16 输入溢出。
当 training_mode=False 时
Y = (X - input_mean) / sqrt(input_var + epsilon) * scale + B
对于以前(已弃用)的非空间情况,建议实现者在 BatchNormalization Op 之前将输入形状展平为 (N x C * D1 * D2 * … * Dn)。此操作符具有可选输入/输出。有关可选参数表示的更多详细信息,请参阅 ONNX IR。可以使用空字符串代替实际参数名称来表示缺失的参数。尾随可选参数(那些后面没有实际参数的参数)也可以直接省略。
属性¶
epsilon - FLOAT (默认为
'1e-05'
)用于避免除以零的 epsilon 值。
momentum - FLOAT (默认为
'0.9'
)用于计算运行均值和方差的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum)。
training_mode - INT (默认为
'0'
)如果设置为 true,则表示 BatchNormalization 用于训练,并且将计算输出 1 和 2。
输入¶
X (异构) - T
来自上一个操作符的输入数据张量;维度形式为 (N x C x D1 x D2 … Dn),其中 N 是批量大小,C 是通道数。统计量针对 N 和 D1 到 Dn 维度的每个 C 通道计算。对于图像数据,输入维度变为 (N x C x H x W)。该操作符也接受大小为 N 的单维度输入,在这种情况下 C 假定为 1。
scale (异构) - T1
形状为 (C) 的缩放张量。
B (异构) - T1
形状为 (C) 的偏置张量。
input_mean (异构) - T2
形状为 (C) 的运行(训练)或估计(测试)均值张量。
input_var (异构) - T2
形状为 (C) 的运行(训练)或估计(测试)方差张量。
输出¶
输出数量介于 1 到 3 之间。
Y (异构) - T
与 X 形状相同的输出张量
running_mean (可选,异构) - T2
BatchNormalization 操作符之后的运行均值。
running_var (可选,异构) - T2
BatchNormalization 操作符之后的运行方差。此操作符使用总体大小 (N) 计算方差,而不是样本大小 N-1。
类型约束¶
T 包含 (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。
T1 包含 (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)将 scale 和 bias 类型限制为浮点张量。
T2 包含 (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)将均值和方差类型限制为浮点张量。
BatchNormalization - 14¶
版本¶
域:
main
起始版本:
14
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自版本 14 起可用。
摘要¶
根据论文 https://arxiv.org/abs/1502.03167 中描述的方法进行批归一化。根据运行模式,有五个必需的输入:'X'、'scale'、'B'、'input_mean' 和 'input_var'。请注意,在推理模式(training_mode=False,默认)下,'input_mean' 和 'input_var' 预期为估计统计量,在训练模式(training_mode=True)下为运行统计量。输出的数量有多种情况,如下所示:
输出情况 #1: Y, running_mean, running_var (training_mode=True) 输出情况 #2: Y (training_mode=False)
当 training_mode=False 时,额外输出无效。当 training_mode=True 时,输出更新如下:
running_mean = input_mean * momentum + current_mean * (1 - momentum)
running_var = input_var * momentum + current_var * (1 - momentum)
Y = (X - current_mean) / sqrt(current_var + epsilon) * scale + B
where:
current_mean = ReduceMean(X, axis=all_except_channel_index)
current_var = ReduceVar(X, axis=all_except_channel_index)
Notice that ReduceVar refers to the population variance, and it equals to
sum(sqrd(x_i - x_avg)) / N
where N is the population size (this formula does not use sample size N - 1).
当 training_mode=False 时
Y = (X - input_mean) / sqrt(input_var + epsilon) * scale + B
对于以前(已弃用)的非空间情况,建议实现者在 BatchNormalization Op 之前将输入形状展平为 (N x C * D1 * D2 * … * Dn)。此操作符具有可选输入/输出。有关可选参数表示的更多详细信息,请参阅 ONNX IR。可以使用空字符串代替实际参数名称来表示缺失的参数。尾随可选参数(那些后面没有实际参数的参数)也可以直接省略。
属性¶
epsilon - FLOAT (默认为
'1e-05'
)用于避免除以零的 epsilon 值。
momentum - FLOAT (默认为
'0.9'
)用于计算运行均值和方差的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum)。
training_mode - INT (默认为
'0'
)如果设置为 true,则表示 BatchNormalization 用于训练,并且将填充输出 1、2、3 和 4。
输入¶
X (异构) - T
来自上一个操作符的输入数据张量;维度形式为 (N x C x D1 x D2 … Dn),其中 N 是批量大小,C 是通道数。统计量针对 N 和 D1 到 Dn 维度的每个 C 通道计算。对于图像数据,输入维度变为 (N x C x H x W)。该操作符也接受大小为 N 的单维度输入,在这种情况下 C 假定为 1。
scale (异构) - T
形状为 (C) 的缩放张量。
B (异构) - T
形状为 (C) 的偏置张量。
input_mean (异构) - U
形状为 (C) 的运行(训练)或估计(测试)均值张量。
input_var (异构) - U
形状为 (C) 的运行(训练)或估计(测试)方差张量。
输出¶
输出数量介于 1 到 3 之间。
Y (异构) - T
与 X 形状相同的输出张量
running_mean (可选,异构) - U
BatchNormalization 操作符之后的运行均值。
running_var (可选,异构) - U
BatchNormalization 操作符之后的运行方差。此操作符使用总体大小 (N) 计算方差,而不是样本大小 N-1。
类型约束¶
T 包含 (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。
U 包含 (
tensor(bfloat16)
,tensor(double)
,tensor(float)
,tensor(float16)
)将均值和方差类型限制为浮点张量。它允许 U 使用所有浮点类型。
BatchNormalization - 9¶
版本¶
域:
main
起始版本:
9
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自 版本 9 起可用。
摘要¶
根据论文 https://arxiv.org/abs/1502.03167 中描述的方法进行批归一化。根据运行模式,输出的数量有多种情况,如下所示:
输出情况 #1: Y, mean, var, saved_mean, saved_var (训练模式) 输出情况 #2: Y (测试模式)
对于以前(已弃用)的非空间情况,建议实现者在 BatchNormalization Op 之前将输入形状展平为 (N x CD1D2 …*Dn)。此操作符具有可选输入/输出。有关可选参数表示的更多详细信息,请参阅 ONNX IR。可以使用空字符串代替实际参数名称来表示缺失的参数。尾随可选参数(那些后面没有实际参数的参数)也可以直接省略。
属性¶
epsilon - FLOAT (默认为
'1e-05'
)用于避免除以零的 epsilon 值。
momentum - FLOAT (默认为
'0.9'
)用于计算运行均值和方差的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum)。
输入¶
X (异构) - T
来自上一个操作符的输入数据张量;维度形式为 (N x C x D1 x D2 … Dn),其中 N 是批量大小,C 是通道数。统计量针对 N 和 D1 到 Dn 维度的每个 C 通道计算。对于图像数据,输入维度变为 (N x C x H x W)。该操作符也接受大小为 N 的单维度输入,在这种情况下 C 假定为 1。
scale (异构) - T
形状为 (C) 的缩放张量。
B (异构) - T
形状为 (C) 的偏置张量。
mean (异构) - T
形状为 (C) 的运行(训练)或估计(测试)均值张量。
var (异构) - T
形状为 (C) 的运行(训练)或估计(测试)方差张量。
输出¶
输出数量介于 1 到 5 之间。
Y (异构) - T
与 X 形状相同的输出张量
mean (可选,异构) - T
BatchNormalization 操作符之后的运行均值。
var (可选,异构) - T
BatchNormalization 操作符之后的运行方差。
saved_mean (可选,异构) - T
训练期间使用的保存均值,用于加速梯度计算。
saved_var (可选,异构) - T
训练期间使用的保存方差,用于加速梯度计算。
类型约束¶
T 包含 (
tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。
BatchNormalization - 7¶
版本¶
域:
main
起始版本:
7
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自版本 7 起可用。
摘要¶
根据论文 https://arxiv.org/abs/1502.03167 中描述的方法进行批归一化。根据运行模式,输出的数量有多种情况,如下所示:
输出情况 #1: Y, mean, var, saved_mean, saved_var (训练模式) 输出情况 #2: Y (测试模式) 此操作符具有可选输入/输出。有关可选参数表示的更多详细信息,请参阅 ONNX IR。可以使用空字符串代替实际参数名称来表示缺失的参数。尾随可选参数(那些后面没有实际参数的参数)也可以直接省略。
属性¶
epsilon - FLOAT (默认为
'1e-05'
)用于避免除以零的 epsilon 值。
momentum - FLOAT (默认为
'0.9'
)用于计算运行均值和方差的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum)。
spatial - INT (默认为
'1'
)如果为 true,则计算每个激活的均值和方差。如果为 false,则计算每个 mini-batch 中每个特征的均值和方差。
输入¶
X (异构) - T
来自上一个操作符的输入数据张量;图像情况的维度为 (N x C x H x W),其中 N 是批量大小,C 是通道数,H 和 W 是数据的高度和宽度。对于非图像情况,维度形式为 (N x C x D1 x D2 … Dn),其中 N 是批量大小。
scale (异构) - T
如果 spatial 为 true,则 scale 的维度为 (C)。如果 spatial 为 false,则 scale 的维度为 (C x D1 x … x Dn)。
B (异构) - T
如果 spatial 为 true,则 bias 的维度为 (C)。如果 spatial 为 false,则 bias 的维度为 (C x D1 x … x Dn)。
mean (异构) - T
如果 spatial 为 true,则运行均值(训练)或估计均值(测试)的维度为 (C)。如果 spatial 为 false,则运行均值(训练)或估计均值(测试)的维度为 (C x D1 x … x Dn)。
var (异构) - T
如果 spatial 为 true,则运行方差(训练)或估计方差(测试)的维度为 (C)。如果 spatial 为 false,则运行方差(训练)或估计方差(测试)的维度为 (C x D1 x … x Dn)。
输出¶
输出数量介于 1 到 5 之间。
Y (异构) - T
与 X 形状相同的输出张量
mean (可选,异构) - T
BatchNormalization 操作符之后的运行均值。
var (可选,异构) - T
BatchNormalization 操作符之后的运行方差。
saved_mean (可选,异构) - T
训练期间使用的保存均值,用于加速梯度计算。
saved_var (可选,异构) - T
训练期间使用的保存方差,用于加速梯度计算。
类型约束¶
T 包含 (
tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。
BatchNormalization - 6¶
版本¶
域:
main
起始版本:
6
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的操作符自版本 6 起可用。
摘要¶
根据论文 https://arxiv.org/abs/1502.03167 中描述的方法进行批归一化。根据运行模式,输出的数量有多种情况,如下所示:
输出情况 #1: Y, mean, var, saved_mean, saved_var (训练模式) 输出情况 #2: Y (测试模式)
属性¶
epsilon - FLOAT (默认为
'1e-05'
)用于避免除以零的 epsilon 值,默认为 1e-5f。
is_test - INT (默认为
'0'
)如果设置为非零,则在测试模式下运行空间批归一化,默认为 0。
momentum - FLOAT (默认为
'0.9'
)用于计算运行均值和方差的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum),默认为 0.9f。
spatial - INT (默认为
'1'
)如果为 true,则计算所有空间元素的均值和方差。如果为 false,则计算每个特征的均值和方差。默认为 1。
输入¶
X (异构) - T
来自上一个操作符的输入数据张量;图像情况的维度为 (N x C x H x W),其中 N 是批量大小,C 是通道数,H 和 W 是数据的高度和宽度。对于非图像情况,维度形式为 (N x C x D1 x D2 … Dn),其中 N 是批量大小。
scale (异构) - T
要应用于输出的大小为 C 的一维缩放张量。
B (异构) - T
要应用于输出的大小为 C 的一维偏置张量。
mean (异构) - T
大小为 C 的一维运行均值(训练)或估计均值(测试)张量。
var (异构) - T
大小为 C 的一维运行方差(训练)或估计方差(测试)张量。
输出¶
输出数量介于 1 到 5 之间。
Y (异构) - T
与 X 形状相同的输出张量。
mean (可选,异构) - T
BatchNormalization 操作符之后的运行均值。必须与输入均值原地修改。不应用于测试。
var (可选,异构) - T
BatchNormalization 操作符之后的运行方差。必须与输入方差原地修改。不应用于测试。
saved_mean (可选,异构) - T
训练期间使用的保存均值,用于加速梯度计算。不应用于测试。
saved_var (可选,异构) - T
训练期间使用的保存方差,用于加速梯度计算。不应用于测试。
类型约束¶
T 包含 (
tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。
BatchNormalization - 1¶
版本¶
域:
main
起始版本:
1
函数:
False
支持级别:
SupportType.COMMON
形状推断:
False
此版本的运算符自 版本 1 起可用。
摘要¶
根据论文 https://arxiv.org/abs/1502.03167 中描述的方法进行批归一化。根据运行模式,输出的数量有多种情况,如下所示:
输出情况 #1: Y, mean, var, saved_mean, saved_var (训练模式) 输出情况 #2: Y (测试模式)
属性¶
consumed_inputs - INTS (必需)
传统优化属性。
epsilon - FLOAT (默认为
'1e-05'
)用于避免除以零的 epsilon 值,默认为 1e-5f。
is_test - INT (默认为
'0'
)如果设置为非零,则在测试模式下运行空间批归一化,默认为 0。
momentum - FLOAT (默认为
'0.9'
)用于计算运行均值和方差的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum),默认为 0.9f。
spatial - INT (默认为
'1'
)如果为 true,则计算所有空间元素的均值和方差。如果为 false,则计算每个特征的均值和方差。默认为 1。
输入¶
X (异构) - T
形状为 NCHW 的输入四维张量。
scale (异构) - T
要应用于输出的大小为 C 的一维缩放张量。
B (异构) - T
要应用于输出的大小为 C 的一维偏置张量。
mean (异构) - T
大小为 C 的一维运行均值(训练)或估计均值(测试)张量。
var (异构) - T
大小为 C 的一维运行方差(训练)或估计方差(测试)张量。
输出¶
输出数量介于 1 到 5 之间。
Y (异构) - T
与 X 形状相同的输出四维张量。
mean (可选,异构) - T
BatchNormalization 操作符之后的运行均值。必须与输入均值原地修改。不应用于测试。
var (可选,异构) - T
BatchNormalization 操作符之后的运行方差。必须与输入方差原地修改。不应用于测试。
saved_mean (可选,异构) - T
训练期间使用的保存均值,用于加速梯度计算。不应用于测试。
saved_var (可选,异构) - T
训练期间使用的保存方差,用于加速梯度计算。不应用于测试。
类型约束¶
T 包含 (
tensor(double)
,tensor(float)
,tensor(float16)
)将输入和输出类型限制为浮点张量。