BatchNormalization

BatchNormalization - 15

版本

此版本的運算子自版本 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

版本

此版本的運算符自版本 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

版本

此版本的運算符自版本 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

版本

此版本的運算符自版本 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

版本

此版本的運算符自版本 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

版本

此版本的運算符自版本 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) )

    限制輸入和輸出類型為浮點數張量。