BatchNormalization¶
BatchNormalization - 15¶
版本¶
網域:
main
since_version:
15
函式:
False
支援等級:
SupportType.COMMON
形狀推斷:
True
此版本的運算子自版本 15 起可用。
摘要¶
執行論文 https://arxiv.org/abs/1502.03167 中所述的批次正規化。根據執行的模式,有五個必要的輸入「X」、「scale」、「B」、「input_mean」和「input_var」。請注意,「input_mean」和「input_var」預期是推論模式 (training_mode=False,預設) 中的估計統計資料,以及訓練模式 (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 運算之前將輸入形狀展平為 (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
形狀為 © 的縮放張量。
B (異質) - T1
形狀為 © 的偏差張量。
input_mean (異質) - T2
形狀為 © 的執行 (訓練) 或估計 (測試) 平均值張量。
input_var (異質) - T2
形狀為 © 的執行 (訓練) 或估計 (測試) 變異數張量。
輸出¶
介於 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)
)限制 mean 和 variance 類型為浮點數張量。
BatchNormalization - 14¶
版本¶
網域:
main
since_version:
14
函式:
False
支援等級:
SupportType.COMMON
形狀推斷:
True
此版本的運算符自版本 14 起可用。
摘要¶
執行論文 https://arxiv.org/abs/1502.03167 中所述的批次正規化。根據執行的模式,有五個必要的輸入「X」、「scale」、「B」、「input_mean」和「input_var」。請注意,「input_mean」和「input_var」預期是推論模式 (training_mode=False,預設) 中的估計統計資料,以及訓練模式 (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 運算之前將輸入形狀展平為 (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
形狀為 © 的縮放張量。
B (異質) - T
形狀為 © 的偏差張量。
input_mean (異質) - U
形狀為 © 的執行 (訓練) 或估計 (測試) 平均值張量。
input_var (異質) - U
形狀為 © 的執行 (訓練) 或估計 (測試) 變異數張量。
輸出¶
介於 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)
)限制 mean 和 variance 類型為浮點數張量。 它允許 U 使用所有浮點數類型。
BatchNormalization - 9¶
版本¶
網域:
main
since_version:
9
函式:
False
支援等級:
SupportType.COMMON
形狀推斷:
True
此版本的運算符自版本 9 起可用。
摘要¶
執行論文 https://arxiv.org/abs/1502.03167 中描述的批次標準化。根據執行的模式,輸出數量有多種情況,我們在下面列出
輸出情況 #1:Y、mean、var、saved_mean、saved_var (訓練模式) 輸出情況 #2:Y (測試模式)
對於先前的 (已棄用) 非空間情況,建議實作者在執行 BatchNormalization 運算之前,將輸入形狀展平為 (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
形狀為 © 的縮放張量。
B (異質) - T
形狀為 © 的偏差張量。
mean (異質) - T
形狀為 © 的執行 (訓練) 或估計 (測試) 平均值張量。
var (異質) - T
形狀為 © 的執行 (訓練) 或估計 (測試) 變異數張量。
輸出¶
介於 1 到 5 個輸出之間。
Y (異質) - T
與 X 形狀相同的輸出張量
mean (可選,異質) - T
BatchNormalization 運算子之後的執行平均值。
var (可選,異質) - T
在 BatchNormalization 運算符之後的 running variance。
saved_mean (可選,異質) - T
訓練期間使用的已儲存平均值,以加速梯度計算。
saved_var (可選,異質) - T
訓練期間使用的已儲存變異數,以加速梯度計算。
類型約束¶
T 屬於 (
tensor(double)
,tensor(float)
,tensor(float16)
)限制輸入和輸出類型為浮點數張量。
BatchNormalization - 7¶
版本¶
網域:
main
since_version:
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 的維度為 ©。如果 spatial 為 false,則 scale 的維度為 (C x D1 x … x Dn)
B (異質) - T
如果 spatial 為 true,則 bias 的維度為 ©。如果 spatial 為 false,則 bias 的維度為 (C x D1 x … x Dn)
mean (異質) - T
如果 spatial 為 true,則 running mean (訓練) 或估計平均值 (測試) 的維度為 ©。如果 spatial 為 false,則 running mean (訓練) 或估計平均值 (測試) 的維度為 (C x D1 x … x Dn)。
var (異質) - T
如果 spatial 為 true,則 running variance (訓練) 或估計變異數 (測試) 的維度為 ©。如果 spatial 為 false,則 running variance (訓練) 或估計變異數 (測試) 的維度為 (C x D1 x … x Dn)。
輸出¶
介於 1 到 5 個輸出之間。
Y (異質) - T
與 X 形狀相同的輸出張量
mean (可選,異質) - T
BatchNormalization 運算子之後的執行平均值。
var (可選,異質) - T
在 BatchNormalization 運算符之後的 running variance。
saved_mean (可選,異質) - T
訓練期間使用的已儲存平均值,以加速梯度計算。
saved_var (可選,異質) - T
訓練期間使用的已儲存變異數,以加速梯度計算。
類型約束¶
T 屬於 (
tensor(double)
,tensor(float)
,tensor(float16)
)限制輸入和輸出類型為浮點數張量。
BatchNormalization - 6¶
版本¶
網域:
main
since_version:
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 和 variance 的因子。例如,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
要套用至輸出的 1 維張量,大小為 C 的 scale。
B (異質) - T
要套用至輸出的 1 維張量,大小為 C 的 bias。
mean (異質) - T
running mean (訓練) 或估計平均值 (測試),大小為 C 的 1 維張量。
var (異質) - T
running variance (訓練) 或估計變異數 (測試),大小為 C 的 1 維張量。
輸出¶
介於 1 到 5 個輸出之間。
Y (異質) - T
與 X 相同形狀的輸出張量。
mean (可選,異質) - T
BatchNormalization 運算符之後的 running mean。必須與輸入平均值就地執行。不應使用於測試。
var (可選,異質) - T
BatchNormalization 運算符之後的 running variance。必須與輸入變異數就地執行。不應使用於測試。
saved_mean (可選,異質) - T
訓練期間使用的已儲存平均值,以加速梯度計算。不應使用於測試。
saved_var (可選,異質) - T
訓練期間使用的已儲存變異數,以加速梯度計算。不應使用於測試。
類型約束¶
T 屬於 (
tensor(double)
,tensor(float)
,tensor(float16)
)限制輸入和輸出類型為浮點數張量。
BatchNormalization - 1¶
版本¶
網域:
main
since_version:
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 和 variance 的因子。例如,running_mean = running_mean * momentum + mean * (1 - momentum),預設值為 0.9f。
spatial - INT (預設值為
'1'
)如果為 true,則計算所有空間元素的平均值和變異數。如果為 false,則計算每個特徵的平均值和變異數。預設值為 1。
輸入¶
X (異質) - T
形狀為 NCHW 的輸入 4 維張量。
scale (異質) - T
要套用至輸出的 1 維張量,大小為 C 的 scale。
B (異質) - T
要套用至輸出的 1 維張量,大小為 C 的 bias。
mean (異質) - T
running mean (訓練) 或估計平均值 (測試),大小為 C 的 1 維張量。
var (異質) - T
running variance (訓練) 或估計變異數 (測試),大小為 C 的 1 維張量。
輸出¶
介於 1 到 5 個輸出之間。
Y (異質) - T
與 X 相同形狀的輸出 4 維張量。
mean (可選,異質) - T
BatchNormalization 運算符之後的 running mean。必須與輸入平均值就地執行。不應使用於測試。
var (可選,異質) - T
BatchNormalization 運算符之後的 running variance。必須與輸入變異數就地執行。不應使用於測試。
saved_mean (可選,異質) - T
訓練期間使用的已儲存平均值,以加速梯度計算。不應使用於測試。
saved_var (可選,異質) - T
訓練期間使用的已儲存變異數,以加速梯度計算。不應使用於測試。
類型約束¶
T 屬於 (
tensor(double)
,tensor(float)
,tensor(float16)
)限制輸入和輸出類型為浮點數張量。