首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ONNX模型的分裂

ONNX模型的分裂
EN

Stack Overflow用户
提问于 2021-10-04 16:14:56
回答 2查看 449关注 0票数 0

我试图拆分DNN模型,以便在edge上执行网络的一部分,在cloud__上执行其余的网络。因为它必须是跨平台的,并且与每个框架一起工作,所以我需要直接从ONNX 模型开始。

我知道如何从tensorflow/keras开始生成ONNX模型,以及如何运行ONNX模型,但我意识到在ONNX文件上很难工作,比如可视化和修改它。

是否有人能帮助我理解如何拆分和ONNX模型,或者至少运行ONNX模型的一部分(比如从输入到N层,从N层到输出)?

我从这种情况出发:

代码语言:javascript
复制
# load MobileNetV2 model
model = MobileNetV2()

# Export the model
tf.saved_model.save(model, "saved_model")  

# export to .onnx
!python -m tf2onnx.convert --saved-model saved_model --output mobilenet_v2.onnx --opset 7

# open the saved ONNX Model
print("Import ONNX Model..")
onnx_model = onnx.load("mobilenet_v2.onnx")
tf_rep = prepare(onnx_model, logging_level="WARN", auto_cast=True)

我尝试使用sclblonnx,但是对于这么大的模型(尽管它是一个小模型),我不能真正地打印图形,当我用textlist_/ list _列出输入和输出时,我并不真正了解它们是如何相互关联的。

任何帮助都将不胜感激。提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2022-05-27 06:50:53

Onnx规范中,您可以通过指定张量的输入名和输出名来拆分onnx模型。

票数 0
EN

Stack Overflow用户

发布于 2022-07-12 09:01:37

您可能需要做的第一件事是理解所拥有的onnx模型的下划线

代码语言:javascript
复制
onnx_graph = onnx_model.graph

将返回图形对象。

在此之后,您需要了解要将此图划分为两个单独的图(因此运行两个模型)的位置。

您可以用Netron绘制图形(这就是sclblonnx所做的),也可以通过查看来手动查看内部。

代码语言:javascript
复制
onnx_graph_nodes = onnx_graph.node

当然,查看图形输入(onnx_graph.input)和输出(onnx_graph.output)也很重要。

如果您查看sclblonnx中的"合并“文件,您将看到跳入图形的语法细节以及”拆分“函数可能对您有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69439234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档