TensorFlow 1.x - 3.5 简体中文

Vitis AI 用户指南 (UG1414)

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

量化 API

def quantize(
input_frozen_graph = "", 
input_nodes = "", 
input_shapes = "", 
output_nodes = "", 
input_fn = "", 
method = 1, 
calib_iter = 100, 
output_dir = "./quantize_results", 
**kargs)
该函数会在 WeGO TensorFlow r1.15 中调用 vai_q_tensorflow 命令工具,并将输入浮点模型转换为定点模型,用于 DPU 部署加速。为了与原生 vai_q_tensorflow 量化器完全兼容,从该 API 接收到的所有参数都会直接前传到 vai_q_tensorflow 命令工具。该函数会返回量化的 GraphDef 对象,或者如果失败则返回 None
注释: 当前仅支持通过 PTQ 在 WeGO 中进行即时量化。如需了解有关快速微调和 QAT 量化的更多信息,请参阅 vai_q_tensorflow 量化感知训练

参数

input_frozen_graph
字符串。指向输入冻结计算图 (.pb) 的路径(默认值: )
input_nodes
字符串:要量化的子计算图的输入节点名称列表(以逗号分隔),搭配 output_nodes 一起使用。生成部署模型时,仅包含 input_nodes 与 output_nodes 之间的子计算图。请将其设置为要量化的模型主体开始位置,例如,数据预处理或数据增广之后的节点。(默认值: )
input_shapes
字符串。input_nodes 的形状列表(逗号分隔)。每个节点的形状必须是以逗号分隔的 4 维形状,例如,1,224,224,3;支持批次大小未知,例如,?,224,224,3;如有多个 input_nodes,请给每个节点的形状列表赋值,以 : 分隔,例如,?,224,224,3:?,300,300,1(默认值: )
output_nodes
字符串:要量化的子计算图的输出节点名称列表(以逗号分隔),搭配 input_nodes 一起使用。生成部署模型时,仅包含 input_nodes 与 output_nodes 之间的子计算图。请将其设置为要量化的模型主体结束位置,例如,数据后处理之前的节点。(默认值: )
input_fn
字符串:用于提供输入数据的 Python 可导入函数。格式为 module_name.input_fn_name,例如,my_input_fn.input_fninput_fn 应采用 int 对象作为输入,以指示校准步骤,并给每次调用返回 dict (placeholder_node_name : numpy.Array) 对象,此对象将馈送到模型的占位符节点中。(默认值: )
method
int32:{0,1,2},默认值:1。量化方法,选项包括:
  • 0:非上溢方法。确保量化期间没有任何值达到饱和。它可能导致结果不准确
  • 1:最小差值方法。支持在量化期间较大值达到饱和,以获得较小的量化误差。它比方法 0 慢,但对离群值有更高的耐受力。
  • 2:使用逐通道策略的最小差值方法。支持在量化期间较大值达到饱和,以获得较小的量化误差。为逐通道权重应用特殊策略,但对标准权重和激活则实现方法 1。它比方法 0 慢,但对离群值有更高的耐受力。
calib_iter
int32。校准的迭代。校准图像总数 = calib_iter * batch_size(默认值:100)
output_dir
字符串。用于保存量化结果的目录(默认:./quantize_results)。
注释: 如需了解有关 **kargs 的其他参数的更多信息,请参阅 vai_q_tensorflow 用法
注释: 如需了解有关 WeGO TensorFlow 1.x 的即时量化的更多信息,请参阅示例