onnx与tensorflow格式的相互转换

使用 TensorFlow、ONNX 和 TensorRT 加速深度学习推理 ONNX 是机器学习和深度学习模型的开放格式。它允许您将不同框架(如 TensorFlow 、 PyTorch 、 MATLAB 、 Caffe 和 Keras )的深度学习和机器学习模型转换为单一格式。它定义了一组通用的运算符、深入学习的通用构建块集和通用文件格式。它提供计算图的定义以及内置运算符。可能有一个或多个输入或输出的 ONNX 节点列表形成一个无环图。 阅读详情
AI摘要

本文介绍如何使用ONNX将TensorFlow模型转换为ONNX格式,并进一步转换为TensorFlow模型。通过实例演示了从TensorFlow到ONNX的转换过程及遇到的问题,同时提供了ONNX模型转换为TensorFlow模型的详细代码。

onnx是Facebook打造的AI中间件,但是Tensorflow官方不支持onnx,所以只能用onnx自己提供的方式从tensorflow尝试转换

Tensorflow模型转onnx

Tensorflow转onnx, onnx官方github上有提供转换的方式,地址为https://github.com/onnx/tutorials/blob/master/tutorials/OnnxTensorflowExport.ipynb 。按链接中的步骤一步一步就能完成mnist的模型转换,我也成功转换出了mnist.onnx模型。但是在上面步骤中model = onnx.load('mnist.onnx')之后执行tf_rep = prepare(model)一直不成功。但是换成网上别人用pytorch转的mnist.onnx执行tf_rep = prepare(model)又完全是OK的,这个暂时还没找到原因在哪里。

onnx模型转换为Tensorflow模型

上面提到按官网的教程从tensorflow转换生成的onnx模型执行tf_rep = prepare(model)有问题。所以这里我从网上下载的一个pytorch转换的mnist onnx模型为实验对象,实验用的onnx下载地址:https://download.youkuaiyun.com/download/computerme/10448754
onnx模型转换为Tensorflow模型的代码如下:

import onnx
import numpy as np
from onnx_tf.backend import prepare

model = onnx.load('./assets/mnist_model.onnx')
tf_rep = prepare(model)

img = np.load("./assets/image.npz")
output = tf_rep.run(img.reshape([1, 1,28,28]))

print("outpu mat: \n",output)
print("The digit is classified as ", np.argmax(output))

import tensorflow as tf
with tf.Session() as persisted_sess:
    print("load graph")
    persisted_sess.graph.as_default()
    tf.import_graph_def(tf_rep.predict_net.graph.as_graph_def(), name='')
    inp = persisted_sess.graph.get_tensor_by_name(
        tf_rep.predict_net.tensor_dict[tf_rep.predict_net.external_input[0]].name
    )
    out = persisted_sess.graph.get_tensor_by_name(
        tf_rep.predict_net.tensor_dict[tf_rep.predict_net.external_output[0]].name
    )
    res = persisted_sess.run(out, {inp: img.reshape([1, 1,28,28])})
    print(res)
    print("The digit is classified as ",np.argmax(res))

tf_rep.export_graph('tf.pb')

转换完成后,需要对转换出的tf.pb模型进行验证,验证方式如下:

import numpy as np
import tensorflow as tf
from tensorflow.python.platform import gfile

name = "tf.pb"

with tf.Session() as persisted_sess:
    print("load graph")
    with gfile.FastGFile(name, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

    persisted_sess.graph.as_default()
    tf.import_graph_def(graph_def, name='')

    inp = persisted_sess.graph.get_tensor_by_name('0:0')
    out = persisted_sess.graph.get_tensor_by_name('LogSoftmax:0')
    #test = np.random.rand(1, 1, 28, 28).astype(np.float32)
    #feed_dict = {inp: test}

    img = np.load("./assets/image.npz")
    feed_dict = {inp: img.reshape([1, 1,28,28])}

    classification = persisted_sess.run(out, feed_dict)
    print(out)
    print(classification)

Reference:
https://github.com/onnx/onnx-tensorflow/issues/167

深度学习模型跨框架转换:基于ONNX打通PyTorch、TensorFlow与MATLAB 深度学习模型转换是解决框架壁垒、实现一次训练多处部署的关键技术。其核心原理在于将不同框架的模型转换为统一的中间表示格式,从而打破框架间的生态隔离。这项技术的核心价值在于提升研发效率、加速产品落地,让开发者能够灵活选择最适合的框架进行模型开发,而无需被特定框架绑定。在实际应用中,模型转换广泛应用于工业部署、边缘计算、多框架协作等场景,特别是在需要将PyTorch训练的模型部署到TensorFlow Serving环境,或将MATLAB原型集成到C++/Python生产流水线时显得尤为重要。借助ONNX这一开放 阅读详情

相关推荐

从‘No module named onnx’报错聊起:你的PyTorch/TensorFlow模型导出前该知道的事

本文深入解析了从PyTorch/TensorFlow模型导出ONNX格式时常见的'No module named onnx'报错问题,系统介绍了ONNX生态系统的核心组件及其在模型部署中的关键作用。通过详细的导出步骤、验证方法和优化技巧,帮助开发者掌握ONNX模型转换与部署的全流程,提升模型跨平台部署效率。

weixin_30729609的博客 338

onnx模型转tensorflow模型

ONNX是开源神经网络交换平台,有了它基本上不用纠结用什么深度学习框架的问题了。我现在记录一下怎么将onnx模型转换成tensorflow模型。 1、安装tensorflow和onnx 我是通过Anaconda安装的。【详情】这个博客记载了安装Anaconda和onnx的详情,安装好Anaconda后,至于安装tensorflow只需要输入【conda install tensorflow】就...

NEVERGUVEIP的博客 1万+

对10G/40Gphy中auto-negotiation功能调试

在近期有一个项目,是一台设备中发现mac与phy之间的信号质量有一些差,报文会出现很多的crc错误码。希望可以将mac与phy之间的工作模式改为10GBASE-KR/40GBASE-KR4,从而提高信号质量,减少crc错误码。要实现10GBASE-KR/40GBASE-KR4,需要打开auto-negotiation,所以,文章主要内容是如何开启自协商,以及相关参数的解释。 需要的文档: 1、802.3协议手册 2、所调试phy的芯片手册(我自己使用的是bcm的万兆phy) 万兆phy情况摘要 PHY寄存

MTzhang_22的博客 5829

onnx与tensorflow格式的相互转换,opencv直接调用pd文件进行预测,pytorch转换为onnx

onnx是Facebook打造的AI中间件,但是Tensorflow官方不支持onnx,所以只能用onnx自己提供的方式从tensorflow尝试转换 Tensorflow模型转onnx Tensorflow转onnx, onnx官方github上有提供转换的方式,地址为https://github.com/onnx/tutorials/blob/master/tutorials/OnnxTens...

yangdeshun888的博客 3940

Zemax操作33--5倍激光扩束器

5倍扩束

lzy750750的博客 2931

如何优雅地进行频谱分析—— 一行代码实现绘制MATLAB频谱、功率谱图

之前的文章里讲了关于信号频谱、能量谱的相关理论和MATLAB编程实现方法: Mr.看海:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析) Mr.看海:频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱) 不过对于刚刚开始进行这方面研究,或者对MATLAB不甚熟悉,抑或者不想花太多时间用在编程这件事上的同学,目前缺少一种足够便捷、高效、可靠的代码。 所以笔者想做这样一件事:编写一个函数,同学们只需要导入自己要分析的数据,并按照自己的需求设置部分选项,调用一行代码就可以实现绘制频

fengzhuqiaoqiu的博客 2万+

【tensorflow onnx】TensorFlow2导出ONNX及模型可视化教程

使用深度学习开源框架Pytorch训练完网络模型后,在部署之前通常需要进行格式转换,地平线工具链模型转换目前支持Caffe1.0和ONNX(opset_version=10/11 且 ir_version≤7)两种。ONNX(Open Neural Network Exchange)格式是一种常用的开源神经网络格式,被较多推理引擎支持,例如Pytorch、PaddlePaddle、TensorFlow等。本文将详细介绍如何将TensorFlow2得到的模型导出为ONNX格式。

计算机视觉方面的点点滴滴,欢迎一起讨论 7512

ADS Layout设计实战:从参数设置到协同仿真

本文详细介绍了ADS Layout设计的完整实战流程,从新建工程、单位设置、个性化偏好配置等基础操作入手,逐步深入到基板参数配置、端口设置与电磁仿真器选择等核心环节。重点阐述了参数化版图设计与扫描优化、以及原理图与Layout协同仿真的高级技巧,并通过一个微带线低通滤波器设计案例,完整演示了从理论到实现的闭环设计方法,帮助工程师高效、准确地完成高频电路版图设计与验证。

weixin_29268637的博客 797

使用ONNX将Pytorch转为Tensorflow的使用尝试

使用ONNX将Pytorch转为Tensorflow 参考官方教程将Pytorch通过ONNX转为tensorflow。 from onnx_test import resolution import numpy as np import os from torch import nn import torch.utils.model_zoo as model_zoo import torch.onnx from onnx_tf.backend import prepare import onnx

zjjtilm的博客 2146

告别视频广告:OpenWrt下luci-app-adbyby plus/lite的完整配置与避坑手册

本文详细介绍了在OpenWrt路由器上配置Adbyby Plus/Lite广告屏蔽工具的完整流程与优化方案。从环境准备、规则文件手动配置到高级性能调优,帮助用户有效拦截视频前贴片广告和弹窗广告,提升家庭网络浏览体验。特别针对官方源停止维护的问题,提供了实用的规则更新解决方案。

weixin_29306011的博客 738

从放弃到再入门之拉格朗日对偶问题推导

普通同学的解法 无约束条件:求导就可以了 等式约束:代入消元,再求导 不等式约束:分情况讨论(在边界上和不在边界上),分别对应1,2的情况 然而发现,有些情况消元特别复杂,甚至不能求解 聪明同学的解法 发现:在最优点的情况下,约束曲面的法向量和目标函数的梯度反向必相同或相反 拉格朗日乘子法如何理解? (在2维里可以形象的解释为z=f(x,y)在约束条件g(x,y)=c中,极值...

qq_34564612的博客 1万+

ONNX格式转换完全指南:解决90%的框架兼容性问题

你是否曾因模型格式不兼容而被迫放弃最优框架选择?训练时用PyTorch效率最高,部署却必须转为TensorFlow Lite?ONNX(Open Neural Network Exchange,开放神经网络交换格式)正是为解决这一痛点而生。本文将带你掌握从模型导出、验证到优化的全流程解决方案,读完你将能够: - 实现任意主流框架间的模型无缝转换 - 解决90%的格式兼容性错误 - 优化转换后模型的...

gitblog_00879的博客 1671

Python 爬虫实战:付费 IP 代理使用技巧与爬虫稳定性优化

付费IP代理实战指南:突破反爬与优化稳定性 本文系统讲解付费IP代理在爬虫项目中的高效应用方法。首先对比分析静态代理、动态代理和隧道代理的优缺点及适用场景,推荐高并发项目优先选择隧道代理。然后详细演示了主流代理服务商的集成方法,包括代理池的自动更新和健康检测机制。核心部分重点介绍了爬虫稳定性优化策略,如智能重试、频率控制和请求间隔优化等关键技术。最后通过压力测试验证优化效果,并提供成本控制方案,包括代理复用、错峰爬取等实用技巧。通过本教程,开发者可有效解决高并发爬虫中的IP封禁问题,显著提升系统稳定性和抗风

2503_91057718的博客 2450

Neural Network Libraries与TensorFlow/ONNX互操作:模型转换实战教程

想要在深度学习框架之间无缝迁移模型?Neural Network Libraries(简称NNabla)提供了强大的文件格式转换器,让你能够在TensorFlow、ONNX和NNabla之间自由转换模型!🎯 这篇终极教程将带你掌握NNabla与主流框架的互操作技巧,让你的模型部署更加灵活高效。 ## 为什么需要模型转换?🤔 在现实项目中,我们经常遇到这样的情况: - 团队使用Tensor

gitblog_00091的博客 343

LangChain与LangGraph核心区别解析

LangChain与LangGraph是当前大语言模型(LLM)应用开发中两个紧密相关且极具影响力的开源框架。它们源于LangChain AI公司,设计哲学互补,旨在解决不同维度的LLM工程化问题,共同构成了构建复杂智能应用的强大工具集。

weixin_35774598的博客 1912

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

告别框架壁垒:PyTorch与TensorFlow模型互转全流程

还在为模型跨框架迁移头疼?当你需要将PyTorch模型部署到TensorFlow生产环境,或想要复用TensorFlow生态的预处理工具时,框架不兼容往往导致项目延期。本文将通过**3个实战步骤+2套转换工具+1个避坑指南**,帮你实现模型无缝迁移,解决90%的跨框架兼容性问题。 读完本文你将掌握: - PyTorch→TensorFlow与反向转换的完整流程 - 精度损失检测与修复方案 - 项...

gitblog_01097的博客 379

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ONNX格式转换实践:跨框架部署的可能性

通过本次“万物识别-中文-通用领域”模型的ONNX转换实践,我们提炼出以下三条核心经验“万物识别-中文-通用领域”作为阿里开源的重要视觉能力组件,其背后代表的是中文语境下通用感知系统的建设需求。而ONNX的存在,使得这类模型不再被锁定在单一框架之内。通过本次实践,我们不仅完成了从PyTorch到ONNX的成功转换,更验证了其在服务端、移动端、边缘设备上的广泛适用性。未来随着ONNX生态的持续演进(如支持更多动态控制流、稀疏算子),它将在AI工程化落地中扮演更加关键的角色。🔚一句话总结。

weixin_28939623的博客 379

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ModelScope模型转换工具:跨框架格式互转教程

你是否曾面临训练好的PyTorch模型无法在TensorFlow环境中部署的尴尬?或者需要将重量级模型转换为ONNX格式以提升推理速度?ModelScope模型转换工具(Model-as-a-Service)提供了一站式跨框架格式互转解决方案,支持PyTorch/TensorFlow模型与ONNX、TorchScript、SavedModel等格式的双向转换,解决工业界模型部署中的"格式壁垒"问题...

gitblog_00836的博客 992

Ultralytics TensorFlow 导出工具链解析:SavedModel、GraphDef(.pb) 与 Edge TPU 转换全程源码导读

Ultralytics 的 TensorFlow 系列导出并非直接走 PyTorch→TensorFlow 图转换,而是**以 ONNX 为中间表示、借助 `onnx2tf` 完成跨框架落盘**的工程化链路。本文以 [docs/en/reference/utils/export/tensorflow.md](https://link.gitcode.com/i/41f0d24d61ca4ab21d

gitblog_00305的博客 999

ONNX和Netron

ONNX是一套神经网络模型的开放格式,支持Core ML, PaddlePaddle, SNPE, MXNet, Caffe2, PyTorch, TensorFlow, CNTK 等框架。ONNX的安装比较简单,在Ubuntu上直接pip install onnx即可,从图上可以看出它是依赖Protobuf库的,因为它内部采用的是Protobuf作为其数据存储和传输。ONNX是一种可扩展的计算图模型、一系列内置的运算单元和标准数据类型。每一个计算流图都定义为由节点组成的列表,并构建有向无环图whaosof

whaosoft143ai的博客 1356

TensorFlow与 PyTorch有什么关联么

对TensorFlow和PyTorch关联的解析非常全面深入,从历史渊源、技术特性交叉影响、生态系统互通,到研发团队社区交叉、实际应用关联等多个维度进行了细致阐述,展现了你对这两个深度学习框架的深刻理解。

laocooon的博客 616

ONNX格式详解:跨框架模型部署与优化实践

ONNX(Open Neural Network Exchange)作为深度学习领域的开放模型格式标准,解决了不同框架(如PyTorch、TensorFlow)间模型互操作的难题。其核心原理是通过定义与框架无关的计算图中间表示(IR),实现模型在不同训练框架与推理引擎间的无缝转换。在工程实践中,ONNX显著提升了模型部署效率,支持包括CPU、GPU和边缘设备在内的多种硬件平台。通过算子融合、动态量化等技术,可进一步优化模型推理性能。典型应用场景涵盖计算机视觉、自然语言处理等AI领域,特别是在需要跨平台部署的

weixin_33676492的博客 409

TensorFlow?PyTorch?Paddle?AI工具库生态之争:ONNX一统天下 ⛵

AI诸多工具库工具库之间的切换,是一件耗时耗力的麻烦事。ONNX 即应运而生,使不同人工智能框架(如PyTorch、TensorRT、MXNet)可以采用相同格式存储模型数据并交互,极大方便了算法及模型在不同的框架之间的迁移,带来了AI生态的自由流通。...

ShowMeAI研究中心 1万+

pytorch转onnx验证_一行代码切换TensorFlow与PyTorch,模型训练也能用俩框架

你是否有时要用 PyTorch,有时又要跑 TensorFlow?这个项目就是你需要的,你可以在训练中同时使用两个框架,并端到端地转换模型。也就是说 TensorFlow 写的计算图可以作为某个函数,直接应用到 Torch 的张量上,这操作也是很厉害了。机器之心报道,参与:思源。在早两天开源的 TfPyTh 中,不论是 TensorFlow 还是 PyTorch 计算图,它们都可以包装成一个可微函...

weixin_39869593的博客 92

第3章 开源大模型框架概览3.3 其他框架与工具3.3.1 ONNX:跨框架模型转换

第3章 开源大模型框架概览-3.3 其他框架与工具-3.3.1 ONNX:跨框架模型转换 作者:禅与计算机程序设计艺术 1. 背景介绍 近年来,深度学习(Deep Learning)已成为人工智能(AI)领域的热门话题,深度学

AI架构师小马 560
上一篇: 在ARM板子上把玩Tensorflow Lite
下一篇: tensorflow模型转换成tensorflow lite模型
IT修道者
IT修道者 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄17年 326粉丝 95原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值