AMCT实现量化流程如图1所示。
灰色部分为AMCT提供或基于Ascend Graph接口实现的功能,蓝色部分为Ascend Graph内部接口实现的部分,Ascend Graph内部接口说明请参见《Ascend Graph开发指南》。主要流程如下:
支持量化的层以及约束如下:
框架 |
支持的层类型 |
约束 |
对应Ascend IR定义的层类型 |
---|---|---|---|
Caffe |
InnerProduct:全连接层 |
transpose属性为false,axis为1 |
FullyConnection |
Convolution:卷积层 |
无。 |
Conv2D |
|
Deconvolution: 反卷积层 |
dilation为1、filter维度为4 |
Deconvolution |
|
Pooling |
mode为1,global_pooling为false,不支持移位N操作 |
Pooling |
|
TensorFlow |
MatMul:全连接层 |
transpose_a为False, transpose_b为False,adjoint_a为False,adjoint_b为False |
MatMulV2 |
Conv2D:卷积层 |
weight的输入来源不含有placeholder等可动态变化的节点,且weight的节点类型只能是const |
Conv2D |
|
DepthwiseConv2dNative:Depthwise卷积层 |
weight的输入来源不含有placeholder等可动态变化的节点,且weight的节点类型只能是const |
DepthwiseConv2D |
|
Conv2DBackpropInput |
dilation为1,weight的输入来源不含有placeholder等可动态变化的节点,且weight的节点类型只能是const。 |
Conv2DBackpropInput |
|
BatchMatMulV2 |
adj_x=False,第二路输入要求为2维const |
BatchMatMulV2 |
|
AvgPool |
不支持移位N操作 |
AvgPool |
|
ONNX |
Conv:卷积层 |
- |
Conv2D |
Gemm:广义矩阵乘 |
transpose_a=false |
MatMulV2 |
|
ConvTranspose:转置卷积 |
dilation为1、filter维度为4 |
Conv2DTranspose |
|
MatMul |
第二路输入要求为2维const |
BatchMatMulV2 |
|
AveragePool |
global_pooling为false,不支持移位N操作 |
AvgPoolV2 |