create_quant_config
产品支持情况
| 产品 | 是否支持 | 
|---|---|
| x | |
| √ | |
| √ | |
| √ | 
功能说明
训练后量化接口,根据图的结构找到所有可量化的层,自动生成量化配置文件,并将可量化层的量化配置信息写入配置文件。
函数原型
| 1 | create_quant_config(config_file, model_file, weights_file, skip_layers=None, batch_num=1, activation_offset=True, config_defination=None) | 
参数说明
| 参数名 | 输入/输出 | 说明 | 
|---|---|---|
| config_file | 输入 | 含义:待生成的量化配置文件存放路径及名称。如果存放路径下已经存在该文件,则调用该接口时会覆盖已有文件。 数据类型:string | 
| model_file | 输入 | 含义:用户Caffe模型的定义文件,格式为.prototxt。 数据类型:string | 
| weights_file | 输入 | 含义:用户训练好的Caffe模型权重文件,格式为.caffemodel。 数据类型:string | 
| skip_layers | 输入 | 含义:可量化但不需要量化层的层名。 默认值:None 数据类型:list,列表中元素类型为string 使用约束:如果使用简易配置文件作为入参,则该参数需要在简易配置文件中设置,此时输入参数中该参数配置不生效。 | 
| batch_num | 输入 | 含义:量化使用的batch数量,即使用多少个batch的数据生成量化因子。 数据类型:int 取值范围:大于0的整数 默认值:1 使用约束: 
 | 
| activation_offset | 输入 | 含义:数据量化是否带offset。 默认值:True 数据类型:bool 使用约束:如果使用简易配置文件作为入参,则该参数需要在简易配置文件中设置,此时输入参数中该参数配置不生效。 | 
| config_defination | 输入 | 含义:基于calibration_config_caffe.proto文件生成的简易量化配置文件quant.cfg,*.proto文件所在路径为:AMCT安装目录/amct_caffe/proto/。*.proto文件参数解释以及生成的quant.cfg简易量化配置文件样例请参见训练后量化简易配置文件。 默认值:None 数据类型:字符串 使用约束:当取值为None时,使用输入参数生成配置文件;否则,忽略输入的其他量化参数(skip_layers,batch_num,activation_offset),根据简易配置文件参数config_defination生成json格式的配置文件。 | 
返回值说明
无
约束说明
由于数据格式转换,生成的量化配置文件中与简易配置文件中的量化参数,数值上不完全一致,但不影响精度。
调用示例
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | from amct_caffe import create_quant_config # 通过参数来生成量化配置文件 create_quant_config(config_file="./configs/config.json", model_file="./pretrained_model/model.prototxt", weights_file="./pretrained_model/model.caffemodel", skip_layers=None, batch_num=1, activation_offset=True) # 通过简易配置文件来生成量化配置文件 create_quant_config(config_file="./configs/config.json", model_file="./pretrained_model/model.prototxt", weights_file="./pretrained_model/model.caffemodel", config_defination="./configs/quant.cfg") | 
落盘文件说明:
生成一个json格式的量化配置文件,样例如下(重新执行量化时,该接口输出的量化配置文件将会被覆盖)。
- 均匀量化配置文件(数据量化使用IFMR数据量化算法)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 { "version":1, "batch_num":2, "activation_offset":true, "joint_quant":false, "do_fusion":true, "skip_fusion_layers":[], "conv1":{ "quant_enable":true, "activation_quant_params":{ "max_percentile":0.999999, "min_percentile":0.999999, "search_range":[ 0.7, 1.3 ], "search_step":0.01, "act_algo":"ifmr", "asymmetric":false }, "weight_quant_params":{ "wts_algo":"arq_quantize", "channel_wise":true } }, "conv2":{ "quant_enable":true, "activation_quant_params":{ "max_percentile":0.999999, "min_percentile":0.999999, "search_range":[ 0.7, 1.3 ], "search_step":0.01, "act_algo":"ifmr", "asymmetric":false }, "weight_quant_params":{ "wts_algo":"arq_quantize", "channel_wise":false } } } 
- 均匀量化配置文件(数据量化使用HFMG数据量化算法)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 { "version":1, "batch_num":2, "activation_offset":true, "joint_quant":false, "do_fusion":true, "skip_fusion_layers":[], "conv1":{ "quant_enable":true, "activation_quant_params":{ "act_algo":"hfmg", "num_of_bins":4096 "asymmetric":false }, "weight_quant_params":{ "wts_algo":"arq_quantize", "channel_wise":true } } }