码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • onnx模型转换opset版本和固定动态输入尺寸


     背景:之前我想把onnx模型从opset12变成opset12,太慌乱就没找着,最近找到了官网上有示例的,大爱onnx官网,分享给有需求没找着的小伙伴们。

    1. onnx模型转换opset版本

    官网示例:

    1. import onnx
    2. from onnx import version_converter, helper
    3. # Preprocessing: load the model to be converted.
    4. model_path = "path/to/the/model.onnx"
    5. original_model = onnx.load(model_path)
    6. print(f"The model before conversion:\n{original_model}")
    7. # A full list of supported adapters can be found here:
    8. # https://github.com/onnx/onnx/blob/main/onnx/version_converter.py#L21
    9. # Apply the version conversion on the original model
    10. converted_model = version_converter.convert_version(original_model, <int target_version>)
    11. print(f"The model after conversion:\n{converted_model}")

    其github地址如下:

    onnx/docs/PythonAPIOverview.md at main · onnx/onnx (github.com)icon-default.png?t=N7T8https://github.com/onnx/onnx/blob/main/docs/PythonAPIOverview.md#converting-version-of-an-onnx-model-within-default-domain-aionnx其小伙伴拉到gitee上的地址如下(以防有的小伙伴github打不开):

    docs/PythonAPIOverview.md · meiqicheng/github-onnx-onnx - Gitee.comicon-default.png?t=N7T8https://gitee.com/meiqicheng1216/onnx/blob/master/docs/PythonAPIOverview.md#converting-version-of-an-onnx-model-within-default-domain-aionnx最后附上完整代码:

    1. import onnx
    2. from onnx import version_converter, helper
    3. # A full list of supported adapters can be found here:
    4. # https://github.com/onnx/onnx/blob/main/onnx/version_converter.py#L21
    5. # Apply the version conversion on the original model
    6. # Preprocessing: load the model to be converted.
    7. model_path = r"./demo.onnx"
    8. original_model = onnx.load(model_path)
    9. print(f"The model before conversion:\n{original_model}")
    10. converted_model = version_converter.convert_version(original_model, 11)
    11. print(f"The model after conversion:\n{converted_model}")
    12. save_model = model_path[:-5] + "_opset11.onnx"
    13. onnx.save(converted_model, save_model)

    2. onnx模型转固定动态输入尺寸

    1. def change_dynamic_input_shape(model_path, shape_list: list):
    2. """
    3. 将动态输入的尺寸变成固定尺寸
    4. Args:
    5. model_path: onnx model path
    6. shape_list: [1, 3, ...]
    7. Returns:
    8. """
    9. import os
    10. import onnx
    11. model_path = os.path.abspath(model_path)
    12. output_path = model_path[:-5] + "_fixed.onnx"
    13. model = onnx.load(model_path)
    14. # print(onnx.helper.printable_graph(model.graph))
    15. inputs = model.graph.input # inputs是一个列表,可以操作多输入~
    16. # look_input = inputs[0].type.tensor_type.shape.dim
    17. # print(look_input)
    18. # print(type(look_input))
    19. # inputs[0].type.tensor_type.shape.dim[0].dim_value = 1
    20. for idx, i_e in enumerate(shape_list):
    21. inputs[0].type.tensor_type.shape.dim[idx].dim_value = i_e
    22. # print(onnx.helper.printable_graph(model.graph))
    23. onnx.save(model, output_path)
    24. if __name__ == "__main__":
    25. model_path = "./demo.onnx"
    26. shape_list = [1]
    27. change_dynamic_input_shape(model_path, shape_list)

  • 相关阅读:
    CleanMyMac X2024告别硬盘空间不足,让您的Mac电脑极速如新
    js工具类之数值相关
    maven知识总结
    纯内网环境中k8s下onlyOffice启用https
    数据结构之单链表
    [强化学习总结5] 梯度策略方法
    架构师的 36 项修炼第09讲:系统的安全架构设计
    MongoDB入门与实战-第四章-SpringBoot集成MongoDB
    设计原则和设计模式
    uniClound云开发创建流程
  • 原文地址:https://blog.csdn.net/we34dfg/article/details/134533997
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号