极智AI | onnx模型增删改查算子节点方法

简介: 大家好,我是极智视界,本文介绍一下 onnx 模型增、删、改、查算子节点方法。

大家好,我是极智视界,本文介绍一下 onnx 模型增、删、改、查算子节点方法

大家知道,onnx 是 AI 业界用的很多的 中间模型 (应该没人直接把 onnx 作为原始模型用吧),一般的初始训练模型为 pytorchtensorflow,然后再转换为 onnx ,然后 再用作他用,比如拿来部署等。我画了一个示意图:

这个图看着可能会感觉有些疑惑,我来解释一下:首先左边是训练框架,右边是推理框架,总的 flow 应该是 左->右,但我又画了几个回旋镖,这些回旋镖的意思是:训练框架模型之间也有可能需要通过 onnx 进行转换。

当然这里不是主要讲 模型之间的转换,而是讲 有了onnx模型后,怎么对其中的算子节点进行一些自定的操作呢?

下面开始。

假设我们已经有了一个 resnet50.onnx (如果没有,可以很方便的从 pytorch modelzoo 中导入,然后通过 torch.onnx.export 导出)。

import onnx
# 导入resnet50.onnx模型
resnet50_onnx = onnx.load("./resnet50.onnx")
# 获得onnx图
graph = resnet50_onnx.graph
# 获得onnx节点
node = graph.node
### 准备工作已就绪,开干
# 增、删、改、查一起操作
# 比如咱们要对 `算子类型为Add&输出为225的节点` 进行操作
for i in range(len(node)):
    if node[i].op_type == 'Add':
        node_rise = node[i]
        if node_rise.output[0] == '225':
            print(i)  # 169 => 查到这个算子的ID为169
old_node = node[169]  # 定位到刚才检索到的算子
# 新增一个 `Constant` 算子
new_node = onnx.helper.make_node(
    "Constant",
    inputs=[],
    outputs=['225'],
    value=onnx.helper.make_tensor('value', onnx.TensorProto.FLOAT, [4], [1, 1, 1.2, 1.2])
)  
# 删除旧节点
node.remove(old_node)  
# 插入新节点
node.insert(169, new_node)  
# 是不是还少一个修改节点,比方看下面
# node[169].type = 'Conv'   # 将刚才的算子类型改为2D卷积
# 改名称啥的类似
### 保存新模型
# 校验
onnx.checker.check_model(resnet50_onnx)
# 保存
onnx.save(resnet50_onnx,'resnet50_new.onnx')

说一下 onnx.checker.check_model,这个接口是用来校验新生成的 onnx 模型的 graph、node是否正确,比如你修改的算子类型并不在 onnx 的算子库中,则这个接口会抛出类似 onnx.onnx_cpp2py_export.checker.ValidationError: No Op registered for xxx_opname with domain_version of 11 的报错提醒。这个时候你可能有三个选择:(1) 修改新增的自定义算子类型,使其在onnx的算子库中;(1) 在onnx算子库中新增实现,以覆盖新增的自定义算子;(3) 将错就错,不校验直接保存,自定义算子实现在下一框架/阶段进行。


好了,以上分享了 onnx模型增、删、改、查算子节点方法。希望我的分享能对你的学习有一点帮助。


logo_show.gif

相关文章
|
4月前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
2055 120
|
4月前
|
人工智能 自然语言处理 物联网
GEO优化方法有哪些?2025企业抢占AI流量必看指南
AI的不断重塑传统的信息入口之际,用户的搜索行为也从单一的百度、抖音的简单的查找答案的模式,逐渐转向了对DeepSeek、豆包、文心一言等一系列的AI对话平台的更加深入的探索和体验。DeepSeek的不断迭代优化同时,目前其月活跃的用户已破1.6亿,全网的AI用户规模也已超过6亿,这无疑为其下一阶段的迅猛发展提供了坚实的基础和广泛的市场空间。
|
4月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
439 120
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
843 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
5月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
655 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
5月前
|
人工智能 负载均衡 API
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
大家好,我是Immerse,独立开发者、AGI实践者。分享编程、AI干货、开源项目与个人思考。关注公众号“沉浸式趣谈”,获取独家内容。Vercel新推出的AI Gateway,统一多模型API,支持自动切换、负载均衡与零加价调用,让AI开发更高效稳定。一行代码切换模型,告别接口烦恼!
634 1
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
1436 8

热门文章

最新文章