码迷,mamicode.com
首页 > Web开发 > 详细

mxnet-梯度,反馈与标准化(归一化)

时间:2018-11-13 18:07:37      阅读:1037      评论:0      收藏:0      [点我收藏+]

标签:stat   计算   相同   beta   one   ack   std   dnn   global   

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列表

mxnet-梯度,反馈与标准化(归一化)

标签:stat   计算   相同   beta   one   ack   std   dnn   global   

原文地址:http://blog.51cto.com/13959448/2316471

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!