mxnet-梯度,反饋與標準化(歸一化)

1.attach_grad(grad_req='write', stype=None)

附加一個梯度緩存在NDArray上,這樣,回退(反饋)能計算相應的梯度

參數:
grad_req ({'write', 'add', 'null'})
‘write’: 梯度將在每次回退時覆蓋。
 ‘add’: 梯度將在每次回退時增加到已有數據中。
‘null’: 不計算梯度
stype (str, optional) – 梯度存儲類型,默認與NDArray相同
 
 

2.grad

返回附加在NDArray中的梯度

 

3.backward(out_grad=None, retain_graph=False, train_mode=True)

回退,計算NDArray關於其中的變量的梯度

Parameters:
out_grad (NDArray, optional) – 頂部的梯度
retain_graph (bool, optional) – 是否爲傳遞到其它相同的圖的回退保留計算圖,默認,計算曆史將被刪除。train_mode (bool, optional) – 是否計算訓練梯度或推理梯度
4.批量標準化(歸一化)BatchNorm

mxnet.ndarray.BatchNorm(data=None, gamma=None, beta=None, moving_mean=None, moving_var=None, eps=_Null, momentum=_Null, fix_gamma=_Null, use_global_stats=_Null, output_mean_var=_Null, axis=_Null, cudnn_off=_Null, out=None, name=None, **kwargs)

通過平均值和方差來標準化(歸一化)數據批,應用gamma尺度以及偏移beta。

假設輸入有多於一個的維度,則標準化在axis爲1進行。我們首先計算沿該軸的均值和方差

接着,計算標準化輸出,尺寸與input相同,如下:

均值和var都將輸入作爲向量來返回標量。

假設輸入在軸1上具有大小k,那麼gamma和beta都具有形狀(k,)。如果output_mean_var設置爲true,則同時輸出data_means以及data_var的倒數,這對於向後傳遞是必需的。注意,這兩個輸出的梯度被阻塞。

除了輸入和輸出,這個算子還接受兩個輔助狀態,moving_mean 和moving_var,它們是k長度向量。它們是整個數據集的全局統計信息,它們由以下更新:

moving_mean = moving_mean momentum + data_mean (1 - momentum)
moving_var = moving_var momentum + data_var (1 - momentum)
如果use_global_stats設置爲true,則使用moving_mean和moving_var代替data_means和data_var來計算輸出。它經常在推理過程中使用。

參數軸axis指定輸入形狀的哪個軸表示“通道”(分別歸一化組)。默認值爲1。指定- 1將通道軸axis設置爲輸入形狀中的最後一個項。

gamma 和beta都是可學習的參數。但是如果 fix_gamma爲真,則將伽瑪設置爲1,其梯度爲0。

注意: fix_gamma爲True, 不提供稀疏支持,fix_gamma爲False,稀疏張量們將回退。

 

Parameters:
data (NDArray) – 用於批量標準化的輸入數據
gamma (NDArray) – gamma數組
beta (NDArray) – beta數組
moving_mean (NDArray) – 輸入的運行平均值
moving_var (NDArray) – 輸入的運行方差
eps (double, optional, default=0.001)  -Epsion以防止DIV 0。當使用CUDNN(通常是1E-5)時,至少必須在CUDNN.H中定義CUDNN_BN_MIN_EPSILON
momentum (float, optional, default=0.9) – 移動平均動量
fix_gamma (boolean, optional, default=1) – 在訓練時固定伽馬
use_global_stats (boolean, optional, default=0) – 是否使用全局移動統計而不是本地批量範數。這將迫使batch-norm變成一個scale換算運算符。
output_mean_var (boolean, optional, default=0) – 輸出平均值和逆STD
axis (int, optional, default='1') – 指定通道的形狀軸
cudnn_off (boolean, optional, default=0) – 如果有效不使用CUDNN操作。
out (NDArray, optional) – 輸出的NDArray控制結果
Returns:
out –函數輸出

Return type:
NDArray or  NDArrays列表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章