使用 vai_q_tensorflow 量化模型 - 3.5 简体中文

Vitis AI 用户指南 (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 简体中文

运行以下命令以量化模型:

$vai_q_tensorflow quantize \
				--input_frozen_graph  frozen_graph.pb \
				--input_nodes    ${input_nodes} \
				--input_shapes   ${input_shapes} \
				--output_nodes   ${output_nodes} \
				--input_fn  input_fn \
				[options]

input_nodesoutput_nodes 实参均为量化计算图的输入节点的名称列表。这两个实参分别作为量化的起点和终点。两者间的主计算图将进行量化(如可量化),如下图所示。

图 1. TensorFlow 量化流程

建议将 –input_nodes 设置为预处理部分的最后一个节点,将 -output_nodes 设置为主计算图的最后一个节点,因为预处理和后处理部分的某些操作不可量化。由 Vitis AI 编译器对该模型进行编译并将其部署到 DPU 时,这可能导致错误。

输入节点可能与计算图的占位符节点不同。如果冻结计算图不包含计算图内预处理,则应将占位符节点设置为输入节点。

input_fn 应与占位符节点保持一致。

[options] 表示可选参数。最常用的选项如下:

weight_bit
已量化的权重和偏差的宽度,默认值为 8。
activation_bit
量化激活的位宽,默认值为 8。
method
量化方法,0 对应非溢出方法,1 对应最小差值方法,2 对应归一化的最小差值方法。此非溢出方法用于确保量化期间没有任何值达到饱和。结果可能受到离群值的影响。最小差值方法允许饱和以使量化尽可能降低量化差值。对于离群值而言,此方法更稳健,通常生成的范围比非溢出方法更小。