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

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
简介: 大家好,我是极智视界,本文介绍一下 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

相关文章
|
3天前
|
机器学习/深度学习 人工智能 并行计算
"震撼!CLIP模型:OpenAI的跨模态奇迹,让图像与文字共舞,解锁AI理解新纪元!"
【10月更文挑战第14天】CLIP是由OpenAI在2021年推出的一种图像和文本联合表示学习模型,通过对比学习方法预训练,能有效理解图像与文本的关系。该模型由图像编码器和文本编码器组成,分别处理图像和文本数据,通过共享向量空间实现信息融合。CLIP利用大规模图像-文本对数据集进行训练,能够实现zero-shot图像分类、文本-图像检索等多种任务,展现出强大的跨模态理解能力。
16 2
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
当语言遇见智慧火花:GPT家族历代模型大起底,带你见证从平凡到卓越的AI进化奇迹!
【10月更文挑战第6天】随着自然语言处理技术的进步,GPT系列模型(Generative Pre-trained Transformers)成为该领域的明星。从GPT-1的开创性工作,到GPT-2在规模与性能上的突破,再到拥有1750亿参数的GPT-3及其无需微调即可执行多种NLP任务的能力,以及社区驱动的GPT-NeoX,这些模型不断进化。虽然它们展现出强大的语言理解和生成能力,但也存在如生成错误信息或偏见等问题。本文将对比分析各代GPT模型的特点,并通过示例代码展示其部分功能。
48 2
|
1月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
1月前
|
机器学习/深度学习 人工智能 UED
OpenAI o1模型:AI通用复杂推理的新篇章
OpenAI发布了其最新的AI模型——o1,这款模型以其独特的复杂推理能力和全新的训练方式,引起了业界的广泛关注。今天,我们就来深入剖析o1模型的特点、背后的原理,以及一些有趣的八卦信息。
293 73
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
扩散引导语言建模(DGLM):一种可控且高效的AI对齐方法
DGLM(Diffusion Guided Language Modeling)是一种新型框架,结合了自回归模型的流畅性和扩散模型的灵活性,解决了现有引导生成方法的局限性。DGLM通过扩散网络生成语义提案,并使用轻量级提示生成器将嵌入转化为软提示,引导自回归解码器生成文本。该方法无需微调模型权重,易于控制新属性,并在多个基准数据集上表现出色。实验结果显示,DGLM在毒性缓解、情感控制和组合控制等方面优于现有方法,为可控文本生成提供了新的方向。
35 10
扩散引导语言建模(DGLM):一种可控且高效的AI对齐方法
|
4天前
|
人工智能 自然语言处理
从迷茫到精通:揭秘模型微调如何助你轻松驾驭AI新热点,解锁预训练模型的无限潜能!
【10月更文挑战第13天】本文通过简单的问题解答形式,结合示例代码,详细介绍了模型微调的全流程。从选择预训练模型、准备新任务数据集、设置微调参数,到进行微调训练和评估调优,帮助读者全面理解模型微调的技术细节和应用场景。
22 6
|
12天前
|
人工智能 自然语言处理 安全
【通义】AI视界|Adobe推出文生视频AI模型,迎战OpenAI和Meta
本文精选了过去24小时内的重要科技新闻,包括微软人工智能副总裁跳槽至OpenAI、Adobe推出文本生成视频的AI模型、Meta取消高端头显转而开发超轻量设备、谷歌与核能公司合作为数据中心供电,以及英伟达股价创下新高,市值接近3.4万亿美元。这些动态展示了科技行业的快速发展和激烈竞争。点击链接或扫描二维码获取更多资讯。
|
9天前
|
机器学习/深度学习 人工智能 TensorFlow
解锁AI潜力:让开源模型在私有环境绽放——手把手教你搭建专属智能服务,保障数据安全与性能优化的秘密攻略
【10月更文挑战第8天】本文介绍了如何将开源的机器学习模型(如TensorFlow下的MobileNet)进行私有化部署,包括环境准备、模型获取与转换、启动TensorFlow Serving服务及验证部署效果等步骤,适用于希望保护用户数据并优化服务性能的企业。
24 4
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
揭开模型微调Fine-Tuning的神秘面纱:如何在预训练基础上巧妙调整,解锁定制AI解决方案的秘密武器
【10月更文挑战第8天】模型微调是在预训练模型基础上,利用特定领域数据进一步训练,以优化模型在特定任务上的表现。此方法广泛应用于自然语言处理和计算机视觉等领域,通过调整预训练模型的部分或全部参数,结合适当的正则化手段,有效提升模型性能。例如,使用Hugging Face的Transformers库对BERT模型进行微调,以改善文本匹配任务的准确率。
21 1
|
1月前
|
存储 人工智能 算法
阿里云AI基础设施升级亮相,模型算力利用率提升超20%
阿里云AI基础设施升级亮相,模型算力利用率提升超20%
172 18