骁龙神经处理引擎SDK参考指南(7)

281 篇文章 30 订阅

骁龙神经处理引擎SDK参考指南(7)


4.4.6使用 UDO 准备模型

本节讨论使用用户定义操作 (UDO) 转换框架模型所需的步骤。

将带有 UDO 的网络模型转换为 DLC

snpe- -to-dlc工具通过接受带有选项 --udo_config_paths 的配置文件来支持 UDO 功能。有关输入 UDO 配置文件规范,请参阅定义 UDO。

目前,TensorFlow、Caffe 和 ONNX 模型支持 UDO 功能。它也受以 ONNX 格式表示的使用 Caffe2 训练的模型的支持。

注意: UDO 配置文件中的任何修改都应跟进 DLC 的重新生成以反映更改。

使用 UDO 将 Tensorflow 模型转换为 DLC

以下语法展示了使用 UDO 转换 TensorFlow 模型的方式:

snpe-tensorflow-to-dlc -i <input-tensorflow-model>
                       -d <input-name> <input-dim>
                       --out_node <output-node-name>
                       --udo_config_paths <input-model.json>
                       -o <output-model.dlc>

其中 --udo_config_paths 选项允许用户指定要在转换中使用的 UDO 配置文件。

有关详细信息,请参阅snpe-tensorflow-to-dlc和TensorFlow 模型转换。

将带有 UDO 的 ONNX 模型转换为 DLC

以下语法展示了使用 UDO 转换 ONNX 模型的方式:

snpe-onnx-to-dlc -i <input-onnx-model> 
                 --udo_config_paths <input-model.json> 
                 -o <output-model.dlc>

其中 --udo_config_paths 选项允许用户指定要在转换中使用的 UDO 配置文件。

使用 UDO 量化 DLC

此外,用户可能希望量化具有 UDO 的转换模型以在定点运行时上运行。SNPE SDK为此提供了工具snpe-dlc-quantize 。这是一个可以在主机 x86 平台上运行的离线工具。由于它使用代表性数据集运行推理以确定网络中所有层(包括 UDO)的量化范围,因此用户需要向该工具提供包含 CPU 参考实现的 UDO 包。有关为 x86 平台创建此类包的更多说明,请参阅创建 UDO 包和编译 UDO 包。

以下语法展示了使用 snpe-dlc-quantize 量化带有 UDO 的 DLC 的方式:

snpe-dlc-quantize --input_dlc <model.dlc> 
                  --input_list <input-list.txt> 
                  --udo_package_path <udo-registration-lib> 
                  --output_dlc <quantized-model.dlc>

其中 --udo_package_path 选项允许用户指定 UDO 注册库的绝对路径。

注意:如果您的 UDO 包含静态输入或参数,您需要在 CPU 参考实现中处理浮点和定点数据类型。有关详细信息,请参阅提供的示例 $SNPE_ROOT/examples/NativeCpp/UdoExample/Conv2D/src/CPU/ConvolutionImplLibCpu.cpp。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值