create_quant_config
功能说明
根据图的结构找到所有可量化的层(全连接层(MatMul,transpose_a=False, transpose_b=False,adjoint_a=False,adjoint_b=False),卷积层(Conv2D)、Depthwise卷积层(DepthwiseConv2dNative,dilation为1)、反卷积层(Conv2DBackpropInput,dilation为1)以及平均下采样层Pooling),自动生成量化配置文件,并将可量化层的量化配置信息写入文件。
函数原型
create_quant_config(config_file, graph, skip_layers=None, batch_num=1, activation_offset=True, config_defination=None)
参数说明
参数名 |
输入/返回值 |
含义 |
使用限制 |
---|---|---|---|
config_file |
输入 |
待生成的量化配置文件存放路径及名称。 如果存放路径下已经存在该文件,则调用该接口时会覆盖已有文件。 |
数据类型:string |
graph |
输入 |
用户传入的待量化模型的tf.Graph图。 |
数据类型:tf.Graph |
skip_layers |
输入 |
tf.Graph图中不需要量化层的层名。 |
默认值:None 数据类型:list,列表中元素类型为string |
batch_num |
输入 |
量化使用的batch数量,即使用多少个batch的数据生成量化因子。 |
数据类型:int 取值范围:大于0的整数 默认值:1 batch_num不宜过大,batch_num与batch_size的乘积为量化过程中使用的图片数量,过多的图片会占用较大的内存。 |
activation_offset |
输入 |
数据量化是否带offset。 |
默认值:true 数据类型:bool |
config_defination |
输入 |
基于calibration_config.proto文件生成的简易量化配置文件quant.cfg,calibration_config.proto文件所在路径为:昇腾模型压缩工具安装目录/amct_tensorflow/proto/calibration_config.proto。 calibration_config.proto文件参数解释以及生成的quant.cfg简易量化配置文件样例请参见简易量化配置文件说明。 |
默认值:None 数据类型:字符串 当取值为None时,使用输入参数生成配置文件;否则,忽略输入的其他量化参数(skip_layers,batch_num,activation_offset),根据简易量化配置文件参数config_defination生成json格式的配置文件。 |
返回值说明
无。
函数输出
输出一个json格式的量化配置文件(重新执行量化时,该接口输出的量化配置文件将会被覆盖)。
举例:graph中只有layer_name1和layer_name2支持量化,使用create_quant_config(config_file, graph, skip_layers=None, batch_num=30,activation_offset=True)生成的量化配置文件如下所示。
{ "version": 1, "batch_num": 30, "activation_offset": true, "do_fusion":true, "skip_fusion_layers":[], "layer_name1":{ "quant_enable": false, "activation_quant_params":[ { "max_percentile":0.999999, "min_percentile":0.999999, "search_range":[0.7, 1.3], "search_step":0.01 } ], "weight_quant_params":[ { "channel_wise":true } ] }, "layer_name2":{ "quant_enable": true, "activation_quant_params":[ { "max_percentile":0.999999, "min_percentile":0.999999, "search_range":[0.7, 1.3], "search_step":0.01 } ], "weight_quant_params":[ { "channel_wise":true } ] } }
调用示例
import amct_tensorflow as amct # 建立待量化的网络图结构 network = build_network() # 生成量化配置文件 amct.create_quant_config(config_file="./configs/config.json", graph=tf.get_default_graph(), skip_layers=None, batch_num=1, activation_offset=True)