mindspore.amp.StaticLossScaler

class mindspore.amp.StaticLossScaler(scale_value)[源代码]

Static Loss scale类。用固定的常数来scales和unscale损失或梯度。

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • scale_value (Union(float, int)) - 缩放系数。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> from mindspore import amp, Tensor
>>> import numpy as np
>>> loss_scaler = amp.StaticLossScaler(scale_value=2**10)
>>> loss_value = Tensor([1.], mindspore.float32)
>>> scaled_loss_value = loss_scaler.scale(loss_value)
>>> print(scaled_loss_value)
[1024.]
>>> grads = (Tensor(np.array([1.5, 1.0]), mindspore.float16),
...      Tensor(np.array([1.2]), mindspore.float16))
>>> unscaled_grads = loss_scaler.unscale(grads)
>>> print(unscaled_grads)
(Tensor(shape=[2], dtype=Float16, value= [ 1.4648e-03,  9.7656e-04]),
Tensor(shape=[1], dtype=Float16, value= [ 1.1721e-03]))
adjust(grads_finite)[源代码]

用于调整 LossScalerloss_value 的值。StaticLossScaler 中,scale_value 值固定,因此此方法直接返回False。

参数:
  • grads_finite (Tensor) - bool类型的标量Tensor,表示梯度是否为有效值(无溢出)。

scale(inputs)[源代码]

对inputs进行scale,inputs *= scale_value

参数:
  • inputs (Union(Tensor, tuple(Tensor))) - 损失值或梯度。

返回:

Union(Tensor, tuple(Tensor)),scale后的值。

unscale(inputs)[源代码]

对inputs进行unscale,inputs /= scale_value

参数:
  • inputs (Union(Tensor, tuple(Tensor))) - 损失值或梯度。

返回:

Union(Tensor, tuple(Tensor)),unscale后的值。