mxnet基础到提高(6)--梯度,反馈与标准化(归一化)
1.attach_grad(grad_req=‘write’, stype=None)
附加一個(gè)梯度緩存在NDArray上,這樣,回退(反饋)能計(jì)算相應(yīng)的梯度
參數(shù):
grad_req ({‘write’, ‘a(chǎn)dd’, ‘null’})
‘write’: 梯度將在每次回退時(shí)覆蓋。
‘a(chǎn)dd’: 梯度將在每次回退時(shí)增加到已有數(shù)據(jù)中。
‘null’: 不計(jì)算梯度
stype (str, optional) – 梯度存儲(chǔ)類型,默認(rèn)與NDArray相同
2.grad
返回附加在NDArray中的梯度
3.backward(out_grad=None, retain_graph=False, train_mode=True)
回退,計(jì)算NDArray關(guān)于其中的變量的梯度
Parameters:
out_grad (NDArray, optional) – 頂部的梯度
retain_graph (bool, optional) – 是否為傳遞到其它相同的圖的回退保留計(jì)算圖,默認(rèn),計(jì)算歷史將被刪除。train_mode (bool, optional) – 是否計(jì)算訓(xùn)練梯度或推理梯度
4.批量標(biāo)準(zhǔn)化(歸一化)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)
通過(guò)平均值和方差來(lái)標(biāo)準(zhǔn)化(歸一化)數(shù)據(jù)批,應(yīng)用gamma尺度以及偏移beta。
假設(shè)輸入有多于一個(gè)的維度,則標(biāo)準(zhǔn)化在axis為1進(jìn)行。我們首先計(jì)算沿該軸的均值和方差
接著,計(jì)算標(biāo)準(zhǔn)化輸出,尺寸與input相同,如下:
均值和var都將輸入作為向量來(lái)返回標(biāo)量。
假設(shè)輸入在軸1上具有大小k,那么gamma和beta都具有形狀(k,)。如果output_mean_var設(shè)置為true,則同時(shí)輸出data_means以及data_var的倒數(shù),這對(duì)于向后傳遞是必需的。注意,這兩個(gè)輸出的梯度被阻塞。
除了輸入和輸出,這個(gè)算子還接受兩個(gè)輔助狀態(tài),moving_mean 和moving_var,它們是k長(zhǎng)度向量。它們是整個(gè)數(shù)據(jù)集的全局統(tǒng)計(jì)信息,它們由以下更新:
moving_mean = moving_mean momentum + data_mean (1 - momentum)
moving_var = moving_var momentum + data_var (1 - momentum)
如果use_global_stats設(shè)置為true,則使用moving_mean和moving_var代替data_means和data_var來(lái)計(jì)算輸出。它經(jīng)常在推理過(guò)程中使用。
參數(shù)軸axis指定輸入形狀的哪個(gè)軸表示“通道”(分別歸一化組)。默認(rèn)值為1。指定- 1將通道軸axis設(shè)置為輸入形狀中的最后一個(gè)項(xiàng)。
gamma 和beta都是可學(xué)習(xí)的參數(shù)。但是如果 fix_gamma為真,則將伽瑪設(shè)置為1,其梯度為0。
注意: fix_gamma為True, 不提供稀疏支持,fix_gamma為False,稀疏張量們將回退。
Parameters:
data (NDArray) – 用于批量標(biāo)準(zhǔn)化的輸入數(shù)據(jù)
gamma (NDArray) – gamma數(shù)組
beta (NDArray) – beta數(shù)組
moving_mean (NDArray) – 輸入的運(yùn)行平均值
moving_var (NDArray) – 輸入的運(yùn)行方差
eps (double, optional, default=0.001) -Epsion以防止DIV 0。當(dāng)使用CUDNN(通常是1E-5)時(shí),至少必須在CUDNN.H中定義CUDNN_BN_MIN_EPSILON
momentum (float, optional, default=0.9) – 移動(dòng)平均動(dòng)量
fix_gamma (boolean, optional, default=1) – 在訓(xùn)練時(shí)固定伽馬
use_global_stats (boolean, optional, default=0) – 是否使用全局移動(dòng)統(tǒng)計(jì)而不是本地批量范數(shù)。這將迫使batch-norm變成一個(gè)scale換算運(yùn)算符。
output_mean_var (boolean, optional, default=0) – 輸出平均值和逆STD
axis (int, optional, default=‘1’) – 指定通道的形狀軸
cudnn_off (boolean, optional, default=0) – 如果有效不使用CUDNN操作。
out (NDArray, optional) – 輸出的NDArray控制結(jié)果
Returns:
out –函數(shù)輸出
Return type:
NDArray or NDArrays列表
總結(jié)
以上是生活随笔為你收集整理的mxnet基础到提高(6)--梯度,反馈与标准化(归一化)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: npm error enoent:no
- 下一篇: mxnet基础到提高(7)--卷积神经网