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