Compass Unified Parser 是为将多种不同框架的模型转化成一种浮点中间表示(IR)而设计的, 这种IR是由安谋中国设计的一种标准的IR,用于周易系列的神经网络编译器。
Parser 的主要目标是将一个训练好的模型转换成浮点IR喂给OPT(优化器)。如下是Parser的主要处理流程:
detectionoutput
节点转换为 detectbox
和 nms
节点。conv
和 add
到一个节点。conv/fc
节点和 batchnorm
节点 到一个节点。transpose
节点。Graph
和 Node
的设计在Parser里面,和其他框架类似,我们使用 Graph
和 Node
来表征一个模型,使用一个链表来表征一个图。
Graph
只保存所有节点,节点间的拓扑关系是保存在一个 Node
和另一个 Node
连接上。
Node
表征 IR里的层概念(layer), Node
可以通过调用 serialize
方法来序列化成一个字串。
Parser 是 Compass AIPUBuilder(NN-Compiler) 编译器的一部分。 你可以参考如下Compass AIPUBuilder的指引来安装AIPUBuilder。 完成AIPUBuilder的安装后, Parser 也会被安装并且可以直接使用。
你也可以通过Compass_Integration中的指引来编译一个包含Parser的AIPUBuilder。关于AIPUBuilder的使用说明,请参考MiniPkg里面的说明书:Zhouyi_Compass_Software_Programming_Guide_61010011_0205_01_en.pdf。
初除此之外,Parser可以单独运行。只要满足如下的依赖,就可以直接运行 main.py
文件来运行Parser。
Parser是以配置文件为输入驱动的,你可以使用如下实例来运行Parser
python3 main.py -c my_config.ini
所有的选项必须在 Common
段里面:
input_shape
[required]
输入张量的形状。常间的模型只有一个输入张量,如:input_shape=[1,224,224,3]
如果你有多个输入张量,使用英文逗号分隔,如: input_shape=[1,224,224,3],[1,112,112,3]
model_name
[required]
输入模型的名称
model_type
[optional]
输入模型的框架,默认是tensorflow,目前支持:
tensorflow
tflite
onnx
caffe
model_domain
[required]
模型的分类,例如:
image_classification
object_detection
keyword_spotting
speech_recognition
detection_postprocess
[required 当 model_domain
是 object_detection
]
如果你的模型是object_detection
,并且你使用的是官方的模型,你可以选择如下两种后处理方式,我们将在结束出添加相应的后处理节点:
caffe_fasterrcnn
ssd
ssd_resnet
yolo2
yolo3_tiny
yolo3_full
input_model
[required]
输入模型的文件路径,当前支持tensorflow frozen pb, tflite, caffe and onnx 格式。
input
[required]
输入节点(或张量)的名称,如果有多个输入,使用英文逗号,
分隔。
output
[required]
输出节点(或张量)名称,如果有多个输出,使用英文逗号,
分隔。
[Common]
input_shape = [1,224,224,3]
model_name = resnet50
model_domain = image_classification
detection_postprocess =
input_model = resnet50/frozen.pb
input = Placeholder
output = resnet_v1_50/predictions/Reshape
更多示例请参考 examples。
首先,你需要下载相应的原始模型。你可以通过examples下面的download_model.sh脚本来下载。
sh examples/tensorflow/download_model.sh
然后配置example.cfg文件里的相应的输入输出
[Common]
model_type = tensorflow
model_name = gru_l
model_domain = image_classification
input_model = ./GRU_L.pb
input = Mfcc:0
input_shape = [1, 49, 10]
output = labels_softmax:0
output_dir = ./
运行 run_example.py
--framework
[optional]
指定相应的示例,默认是tensorflow。
--input_data
[optional]
指定相应的输入数据,如果没有指定将使用随机数据。
python3 run_example.py --framework [specify example] --input_data [specify feed data]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。