---
title: 替换LossScaleOptimizer
description: "- 针对Atlas 350 加速卡，Atlas A3 训练系列产品 / Atlas A3 推理系列产品，Atlas A2 训练系列产品 / Atlas A2 推理系列产品，浮点计算的溢出模式默认采用“INF/NaN模式”，因此默认场景下，可直接跳过该迁移点。若您手工调用  set_device_sat_mode"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr2/tfmigr2_000017.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr2/tfmigr2_000017.html
indexId: 6ed83ec9973cec1cf5319aa2bd6d35bda09489341d74a9aba4f6d68823786ddc73
---
# 替换LossScaleOptimizer

#### 使用前须知

- 针对Atlas 350 加速卡，Atlas A3 训练系列产品 / Atlas A3 推理系列产品，Atlas A2 训练系列产品 / Atlas A2 推理系列产品，浮点计算的溢出模式默认采用“INF/NaN模式”，因此默认场景下，可直接跳过该迁移点。若您手工调用  set_device_sat_mode
接口将浮点计算的溢出模式修改为了“饱和模式”，则需要参考本章节进行脚本迁移。但需要注意，饱和模式仅用于兼容旧版本，后续不再演进，且此模式下计算精度可能存在误差。
- 针对Atlas 训练系列产品，如果您的原始脚本中未使用LossScaleOptimizer，可以直接跳过该迁移点；若您的原始脚本中使用了LossScaleOptimizer，请参考本章节进行脚本迁移。


#### 迁移说明

通常，用户原始脚本在使用混合精度提升性能时，会使用LossScaleOptimizer保证精度，浮点计算溢出模式为“饱和模式”的场景下，由于NPU上浮点溢出的行为是全局标志置位而非产生Inf或NaN的输出，所以您需要使用NPU提供的npu.train.optimizer.NpuLossScaleOptimizer以获取正确的溢出检测结果。

npu.train.optimizer.NpuLossScaleOptimizer使用方法与tf.keras.mixed_precision.LossScaleOptimizer完全一致，使用细节可参考链接(https://www.tensorflow.org/api_docs/python/tf/keras/mixed_precision/LossScaleOptimizer)。

如果您的脚本中使用的是tf.keras.mixed_precision.LossScaleOptimizer，直接替换为npu.train.optimizer.NpuLossScaleOptimizer即可。如果您使用了其他类型的LossScaleOptimizer，您应当先切换为tf.keras.mixed_precision.LossScaleOptimizer，进行功能精度验证后再进行上述替换。
