create_quant_config
功能说明
训练后量化接口,根据图的结构找到所有可量化的层,自动生成量化配置文件,并将可量化层的量化配置信息写入量化配置文件。
约束说明
由于数据格式转换,生成的量化配置文件中与简单配置文件中的量化参数,数值上不完全一致,但不影响精度。
函数原型
create_quant_config(config_file, network, *input_data, skip_layers=None, activation_offset=True, config_defination=None)
参数说明
参数名 |
输入/返回值 |
含义 |
使用限制 |
---|---|---|---|
config_file |
输入 |
待生成的量化配置文件存放路径及名称。 如果存放路径下已经存在该文件,则调用该接口时会覆盖已有文件。 |
数据类型:string |
network |
输入 |
MindSpore中的网络模型定义。 |
数据类型:MindSpore的Cell对象 |
input_data |
输入 |
用户网络输入数据(仅要求数据的format和shape正确,数据本身可以是随机生成的) |
数据类型:可以转化为MindSpore Tensor的对象,比如numpy.ndarray对象。 该参数是一个可变参数,支持用户网络有多个输入的场景 |
skip_layers |
输入 |
可量化但不需要量化的层的层名。 |
默认值:None 数据类型:list,列表中元素类型为string 使用约束:
|
activation_offset |
输入 |
数据量化是否带offset。 |
默认值:True 数据类型:bool 使用约束:
|
config_defination |
输入 |
基于calibration_config_mindspore.proto文件生成的简易量化配置文件quant.cfg,calibration_config_mindspore.proto文件所在路径为:AMCT安装目录/amct_mindspore/proto/calibration_config_mindspore.proto。 calibration_config_mindspore.proto文件参数解释以及生成的quant.cfg简易量化配置文件样例请参见训练后量化简易配置文件说明。 |
默认值:None 数据类型:string 使用约束:当取值为None时,使用输入参数生成配置文件;否则,忽略输入的其他量化参数(skip_layers,activation_offset),根据简易量化配置文件参数config_defination生成json格式的配置文件。 关键字参数,因为前面的input_data是可变参数,如果使用该参数,需指明参数的关键字。 |
返回值说明
无。
函数输出
{ "version":1, "activation_offset":true, "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 "asymmetric":false }, "weight_quant_params":{ "channel_wise":true } }, "end_point":{ "quant_enable":true, "activation_quant_params":{ "max_percentile":0.999999, "min_percentile":0.999999, "search_range":[ 0.7, 1.3 ], "search_step":0.01 "asymmetric":false }, "weight_quant_params":{ "channel_wise":false } }, "layer1.0.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 "asymmetric":false }, "weight_quant_params":{ "channel_wise":true } }, "layer1.0.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 "asymmetric":false }, "weight_quant_params":{ "channel_wise":true } } }
调用示例
from amct_mindspore import create_quant_config # 通过参数来生成量化配置文件 input_data = np.random.uniform(0.0, 1.0, size=[32, 1, 32, 32]).astype(np.float32) create_quant_config("./configs/config.json", network, input_data, skip_layers=None, activation_offset=True) # 通过简易配置文件来生成量化配置文件 create_quant_config("./configs/config.json", network, input_data, config_defination="./configs/quant.cfg")