---
title: npu.train.optimizer.NpuLossScaleOptimizer
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr2/tfmigr2_tfadapi_0025.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr2/tfmigr2_tfadapi_0025.html
indexId: 1f7dc83cfe058d716ee8bc73be1ed1be2f49810db79bdd1873ff7ea63a26f13979
---
# npu.train.optimizer.NpuLossScaleOptimizer

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | ☓ |
| Atlas 推理系列产品 | ☓ |
| Atlas 训练系列产品 | √ |


#### 功能说明

NPU提供的LossScaleOptimizer，浮点计算的溢出模式为“饱和模式”的场景下，由于NPU上的溢出运算不保证输出Inf或者NaN，所以此种场景下，使用LossScaleOptimizer的脚本应当替换为该优化器，来屏蔽溢出检测的差异。

- 针对Atlas 350 加速卡，浮点计算支持两种溢出模式：饱和模式与INF/NaN模式，请保持默认值INF/NaN模式。饱和模式仅用于兼容旧版本，后续不再演进，且此模式下计算精度可能存在误差。
- Atlas A3 训练系列产品 / Atlas A3 推理系列产品，浮点计算支持两种溢出模式：饱和模式与INF/NaN模式，请保持默认值INF/NaN模式。饱和模式仅用于兼容旧版本，后续不再演进，且此模式下计算精度可能存在误差。
- Atlas A2 训练系列产品 / Atlas A2 推理系列产品，浮点计算支持两种溢出模式：饱和模式与INF/NaN模式，请保持默认值INF/NaN模式。饱和模式仅用于兼容旧版本，后续不再演进，且此模式下计算精度可能存在误差。
- Atlas 训练系列产品，浮点计算的溢出模式默认为“饱和模式”，且仅支持“饱和模式”。饱和模式是指当计算出现溢出时，饱和为浮点数极值（+-MAX）。


#### 函数原型

```
npu.train.optimizer.NpuLossScaleOptimizer(inner_optimizer, dynamic=True, initial_scale=None, dynamic_growth_steps=None)
```


#### 参数说明

该优化器继承自tf.keras.mixed_precision.LossScaleOptimizer，使用方式完全相同，可以参考LINK(https://tensorflow.google.cn/versions/r2.6/api_docs/python/tf/keras/mixed_precision/LossScaleOptimizer)。


#### 返回值

NpuLossScaleOptimizer类型优化器。


#### 调用示例

```
import npu_device as npu
optimizer = tf.keras.optimizers.Adam(lr=0.1)
optimizer = npu.train.optimizer.NpuLossScaleOptimizer(optimizer)
```
