QuantConfig
功能说明
量化参数配置类,保存量化过程中配置的参数。
函数原型
QuantConfig(quant_mode=1, is_signed_quant=True, is_per_channel=True, calib_data=None, calib_method=0, quantize_nodes=None, exclude_nodes=None, amp_num=0, is_optimize_graph=True, is_quant_depthwise_conv=True, input_shape=None, is_dynamic_shape=False)
参数说明
| 参数名 | 输入/返回值 | 含义 | 使用限制 | 
|---|---|---|---|
| quant_mode | 输入 | 量化模式。 | 可选。 数据类型:int。 可选值[0, 1],默认值为1。 
 | 
| is_signed_quant | 输入 | 激活是否符号量化。 | 可选。 数据类型:bool。 默认值为True,False表示Uint8量化,True表示Int8量化。 CNN类模型建议配置True,Transformer类模型建议配置False。 | 
| is_per_channel | 输入 | 权重是否per_channel量化。 | 可选。 数据类型:bool。 默认值为True。 | 
| calib_data | 输入 | 矫正数据。 | 可选。 数据类型:list,默认值为[]。 对于单输入模型,配置[[input1]],多输入模型,配置[[input1,input2,input3]]。 配置为空时,将随机生成矫正数据。 | 
| calib_method | 输入 | 激活矫正的方法。 | 可选。 数据类型:int。 可选值[0,1,2],默认值为0。 
 | 
| quantize_nodes | 输入 | 需要量化的节点。 | 可选。 数据类型:list。 默认值为[]。仅当列表为非空时,该字段生效。 | 
| exclude_nodes | 输入 | 排除量化的节点名称。 | 可选。 数据类型:list。 默认值为[]。 | 
| amp_num | 输入 | 混合精度回退层数。 | 可选。 数据类型:int。 默认为0。精度降低过多时,可以增大此值,以减少量化的层数。 | 
| is_optimize_graph | 输入 | 是否进行图优化。 | 数据类型:bool,默认为True。 | 
| is_quant_depthwise_conv | 输入 | 是否量化DepthWiseConv算子。 | 可选。 数据类型:bool。 默认为True。当模型中有DepthWiseConv算子,量化精度损失较大时,可以配置为False。 | 
| input_shape | 输入 | 当输入模型支持动态shape时,用户需指定input_shape参数,用以生成量化时的校对数据。 | 可选,当模型支持动态shape时必须指定。 数据类型:list [list] 默认值:[] 当模型有多个输入时,按照顺序指定input_shape,例如:[[1, 3,224, 224], [1, 3, 640, 640]]。 | 
| is_dynamic_shape | 输入 | 指定输入的模型是否支持动态shape。 | 可选。输入模型支持动态shape时,另一配置参数input_shape也必须指定。 数据类型:bool。 默认为False。 
 | 
调用示例
from modelslim.onnx.post_training_quant import QuantConfig
def custom_read_data():
    calib_data = []
    # TODO 读取数据集,进行数据预处理,将数据存入calib_data
    return calib_data
calib_data = custom_read_data() 
quant_config = QuantConfig(calib_data=calib_data, amp_num=5)