mindspore.amp.DynamicLossScaleManager

class mindspore.amp.DynamicLossScaleManager(init_loss_scale=2 ** 24, scale_factor=2, scale_window=2000)[源代码]

动态调整损失缩放系数的管理器,继承自 mindspore.amp.LossScaleManager

参数:
  • init_loss_scale (float) - 初始梯度放大系数。默认值: 2 ** 24

  • scale_factor (int) - 放大/缩小倍数。默认值: 2

  • scale_window (int) - 无溢出时的连续正常step的最大数量。默认值: 2000

支持平台:

Ascend GPU

样例:

>>> import mindspore as ms
>>> from mindspore import amp, nn
>>>
>>> # Define the network structure of LeNet5. Refer to
>>> # https://gitee.com/mindspore/docs/blob/r2.3.0rc2/docs/mindspore/code/lenet.py
>>> net = LeNet5()
>>> loss_scale_manager = amp.DynamicLossScaleManager()
>>> optim = nn.Momentum(params=net.trainable_params(), learning_rate=0.1, momentum=0.9)
>>> model = ms.Model(net, loss_scale_manager=loss_scale_manager, optimizer=optim)
get_drop_overflow_update()[源代码]

该值表示是否在发生溢出时放弃本轮参数更新。

返回:

bool,始终为True。

get_loss_scale()[源代码]

返回当前梯度放大系数。

返回:

float,梯度放大系数。

get_update_cell()[源代码]

返回用于更新梯度放大系数的 mindspore.nn.Cell 实例,mindspore.nn.TrainOneStepWithLossScaleCell 会调用该实例。

返回:

mindspore.nn.DynamicLossScaleUpdateCell 实例,用于更新梯度放大系数。

update_loss_scale(overflow)[源代码]

根据溢出状态更新梯度放大系数。如果发生溢出,减小梯度放大系数,否则增大梯度放大系数。

参数:
  • overflow (bool) - 表示是否溢出。