文档
注册

IFMR数据量化时,存在"inf或NaN值"或"xxx calculate scale failed",量化过程报错

问题描述

在调用TensorFlow框架执行中间校准模型推理过程中,由于输入数据范围不合法,导致量化算法计算得到的scale不合理,从而校准过程失败,终止校准流程。

  • IFMR数据量化时,存在inf或NaN值,量化报错如下:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
      (0) Invalid argument: Error: Exit Infinite value before data quantization! : Tensor had NaN values
    	 [[{{node CheckNumerics_33}}]]
    	 [[detector/yolo-v3-tiny/Conv_2/act_quant/act_quant_IFMR/cond/StringFormat/Switch/_69]]
      (1) Invalid argument: Error: Exit Infinite value before data quantization! : Tensor had NaN values
    	 [[{{node CheckNumerics_33}}]]
    0 successful operations.
    0 derived errors ignored.
    
    During handling of the above exception, another exception occurred:
    
  • calculate scale failed量化报错:

可能原因

针对“calculate scale failed”原因分析如下:

原始数据不在范围:(其中EPSILON包括DBL_EPSILON double类型,FLT_EPSILON float类型,当前使用的是FLT_EPSILON类型)

AMCT量化支持计算得到的最大,因为在昇腾AI处理器量化动作做的是乘法计算: , 如果scale大于会小于FLT_EPSILON,此时量化后结果就不可信。因此AMCT量化算法仅支持原始数据范围在内进行量化,否则会提示不支持并提示错误信息。

处理建议

根据提示信息,跳过日志中的量化层,例如上述提示信息中的Conv_2层。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词