代码拉取完成,页面将自动刷新
Linux
IoT
C++
模型代码生成
推理应用
初级
中级
相较于移动终端,IoT设备上系统资源有限,对ROM空间占用、运行时内存和功耗要求较高。MindSpore Lite提供代码生成工具codegen,将运行时编译、解释计算图,移至离线编译阶段。仅保留推理所必须的信息,生成极简的推理代码。Codegen可对接NNACL和CMSIS算子库,支持生成可在x86/ARM64/ARM32A/ARM32M平台部署的推理代码。
代码生成工具Codegen的使用流程如下:
通过MindSpore Lite转换工具Converter,将训练好的模型文件转换为*.ms
格式;
通过自动代码生成工具codegen,输入*.ms
模型自动生成源代码。
"
自动代码生成工具,可以通过两种方式获取:
目前模型生成工具仅支持在Linux x86_64架构下运行。
详细参数说明如下:
参数 | 是否必选 | 参数说明 | 取值范围 | 默认值 |
---|---|---|---|---|
help | 否 | 打印使用说明信息 | - | - |
codePath | 是 | 生成代码的路径 | - | ./(当前目录) |
target | 是 | 生成代码针对的平台 | x86, ARM32M, ARM32A, ARM64 | x86 |
modelPath | 是 | 输入模型文件路径 | - | - |
supportParallel | 否 | 是否生成支持多线程的代码 | true, false | false |
debugMode | 否 | 是否以生成调试模式的代码 | true, false | false |
输入模型文件,需要经过MindSpore Lite Converter工具转换成.ms格式。 os不支持文件系统时,debugMode不可用。
以LeNet网络为例:
./codegen --modelPath=./lenet.ms --codePath=./
执行成功后,会在codePath指定的目录下,生成名为lenet的文件夹,内容如下:
lenet/
├── benchmark # 集成调试相关的例程
│ ├── benchmark.cc
│ ├── load_input.c
│ └── load_input.h
├── CMakeLists.txt
└── src # 源文件
├── CMakeLists.txt
├── mmodel.h
├── net.bin # 二进制形式的模型权重
├── net.c
├── net.cmake
├── net.h
├── session.cc
├── session.h
├── tensor.cc
├── tensor.h
├── weight.c
└── weight.h
详细接口使用说明,请参考API文档。 以下三个接口暂不支持:
virtual std::unordered_map<String, mindspore::tensor::MSTensor *> GetOutputs() const = 0;
virtual Vector<tensor::MSTensor *> GetOutputsByNodeName(const String &node_name) const = 0;
virtual int Resize(const Vector<tensor::MSTensor *> &inputs, const Vector<Vector<int>> &dims) = 0;
生成代码之后,即可以编译执行推理,详细步骤请参考编译一个MNIST分类模型。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。