基础量化
训练后量化支持量化的层以及约束如下,量化过程请参见获取更多样例。
| 
         支持的层类型  | 
       
         约束  | 
       
         备注  | 
      
|---|---|---|
| 
         MatMul:全连接层  | 
       
         transpose_a=False, transpose_b=False,adjoint_a=False,adjoint_b=False  | 
       
         -  | 
      
| 
         BatchMatMul/BatchMatMulV2  | 
       
         adjoint_a=False,adjoint_b=False  | 
       
         -  | 
      
| 
         Conv2D:卷积层  | 
       
         -  | 
       
         weight的输入来源不含有placeholder等可动态变化的节点,且weight的节点类型只能是const。  | 
      
| 
         DepthwiseConv2dNative:Depthwise卷积层  | 
       
         dilation=1  | 
      |
| 
         Conv2DBackpropInput:反卷积层  | 
       
         dilation=1  | 
      |
| 
         AvgPool:平均下采样层  | 
       
         -  | 
       
         -  | 
      
接口调用流程
训练后量化接口调用流程如图1所示:
     蓝色部分为用户实现,灰色部分为用户调用昇腾模型压缩工具提供的API实现,用户在TensorFlow原始网络推理的代码中导入库,并在特定的位置调用相应API,即可实现量化功能。工具使用分为如下两种场景,本手册重点介绍使用NPU在线推理场景。使用TensorFlow CPU推理的详细操作以及sample运行示例请参见《AMCT工具(TensorFlow)》。
     
   - 使用NPU在线推理:
       
- 用户首先构造TensorFlow的原始模型,然后使用create_quant_config_ascend接口生成量化配置文件。
 - 根据TensorFlow模型和量化配置文件,即可调用quantize_model_ascend接口对原始TensorFlow模型进行优化,修改后的模型中包含了量化算法,用户使用该模型借助昇腾模型压缩工具提供的数据集和校准集,在NPU环境中进行在线推理,可以得到量化因子。
         
其中数据集用于在NPU环境中对模型进行推理时,测试量化数据的精度;校准集用来产生量化因子,保证精度。
 - 最后用户可以调用save_model_ascend接口保存量化后的模型,该模型可在NPU环境中部署。
 
 - 使用TensorFlow CPU推理:
       
- 场景1:
         
- 用户首先构造TensorFlow的原始模型,然后使用create_quant_config接口生成量化配置文件。
 - 根据TensorFlow模型和量化配置文件,即可调用quantize_model接口对原始TensorFlow模型进行优化,修改后的模型中包含了量化算法,用户使用该模型借助昇腾模型压缩工具提供的数据集和校准集,在TensorFlow CPU环境中进行推理,可以得到量化因子。
           
其中数据集用于在TensorFlow环境中对模型进行推理时,测试量化数据的精度;校准集用来产生量化因子,保证精度。
 - 最后用户可以调用save_model接口保存量化后的模型,该模型可在TensorFlow CPU环境中进行精度仿真。
 
关于接口的详细说明请参见接口说明。
 - 场景2:
         
如果用户不使用 场景1中的接口,而是用自己计算得到的量化因子以及TensorFlow原始模型,生成量化模型,则需要使用convert_model接口完成相关量化动作。
 
 - 场景1:
         
 
调用示例
调用示例请参见快速入门。
     父主题: 训练后量化
    
   