onnx算子精度是fp32,使用atc转换om后都变为fp16精度降低,保持原精度

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend
MindSpore版本: mindspore=2.6.0
执行模式(PyNative/ Graph): 不限
Python版本: Python=3.9
操作系统平台: Linux

2 报错信息

2.1 问题描述

onnx算子精度是fp32,使用atc转换om后都变为fp16,精度降低了,即使使用precision_mode=force_fp32,也无法保持原精度,如何保持原精度?

3 解决方案

尝试混合精度模式并锁定关键算子,使用 allow_mix_precision模式。

atc --model=your_model.onnx \ 
    --framework=5 \ 
    --output=your_model \ 
    --soc_version=Ascend310 \  # 请替换为您的芯片版本 
    --precision_mode=allow_mix_precision \ 
    --op_precision_mode=MatMul:force_fp32,Conv:force_fp32,Gemm:force_fp32