pth转onnx,onnx转tflite,亲测有效

这篇具有很好参考价值的文章主要介绍了pth转onnx,onnx转tflite,亲测有效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. pth2onnx

        pth模型转onnx模型采用torch框架现有转换函数:torch.onnx.export(),函数使用过程中注意要设置输入输出name,以及将batch维度设置为动态,以便后续onnx转tflite。

        具体转换代码如下:

def pth2onnx(pth_path, onnx_path):
    //加载模型
    model = MyModel()  //实例化modle对象
    model.load_state_dict(torch.load(pth_path))

    //模型转换
    dummy_input = torch.randn(1, 3, 256, 256).type(torch.FloatTensor)  #.to(self.device_num)
    dummy_input = dummy_input.to(next(model.parameters()).device)
    input_names = ["inputs"]
    output_names = ["outputs"]
    dynamic_axes = {"inputs":{0: "batch_size"}}  
    torch.onnx.export(model, 
                    dummy_input, 
                    onnx_path,            //设置onnx模型输出路径,例如:c:/xxx.onnx
                    export_params=True,
                    verbose=False,
                    input_names=input_names,
                    output_names=output_names,
                    dynamic_axes=dynamic_axes
                    )
    print("-----pth to onnx trans successed.")

2. onnx2tflite

        网上其他转换方案,虽然可以成功转换,但是存在一个问题,由于pth模型默认的数据存储是[b, c, h, w],转换之后的tflite也是[b, c, h, w],但是tflite的常规数据格式是[b, h, w, c],这个问题曾经让我排查了1天。

        最后借助开源项目完成转换,亲测有效,先上连接,再次感谢这位大佬。

        转换代码如下:文章来源地址https://www.toymoban.com/news/detail-544599.html

import sys
sys.path.append("./onnx2tflite_MPolaris")
from converter import onnx_converter


def onnx2tflite(onnx_path, tflite_path):
    onnx_converter(
        onnx_model_path = onnx_path,
        need_simplify = False,
        output_path = "./result/",
        target_formats = ['tflite'], # or ['keras'], ['keras', 'tflite']
        weight_quant = False,
        int8_model = False,
        int8_mean = None,
        int8_std = None,
        image_root = None
        )

到了这里,关于pth转onnx,onnx转tflite,亲测有效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch报错解决——(亲测有效)RuntimeError: Distributed package doesn‘t have NCCL built in

    在我跑SLADD模型的时候,出现了如下报错: 上网搜寻一番后,发现了解决方法 第一步:在本文件的开头机上这样两行代码: 第二步:在本文件代码中找到这样一部分代码: 把 dist.init_process_group(backend=\\\'nccl\\\', init_method=\\\'env://\\\', world_size=args.world_size, rank=rank) 这一行中的nccl换成gl

    2024年02月12日
    浏览(45)
  • YOLOV7算法(五)pth/pt转onnx学习记录

    输入指令 export.py代码学习 如果遇到 则把输入指令改成 yolov7.onnx网络结构图

    2024年02月11日
    浏览(37)
  • 将pytorch的pth文件固化为pt文件

    说明 我参考了一个开源的人像语义分割项目mobile_phone_human_matting,这个项目提供了预训练模型,我想要将该模型固化,然后转换格式后在嵌入式端使用。 该项目保存模型的代码如下: 转换代码 上面代码保存了state_dict, 所以保存的文件中是不含模型结构的,固化时需要从代码

    2024年02月10日
    浏览(41)
  • PyTorch:通过pth文件查看网络结构(查看输入输出维度)

    输出(部分截图)为: 待补充

    2024年02月16日
    浏览(29)
  • 移动端深度学习部署:TFlite

    tflite 是谷歌自己的一个轻量级推理库。主要用于移动端。 tflite 使用的思路主要是从预训练的模型转换为 tflite 模型文件,拿到移动端部署。 tflite 的源模型可以来自 tensorflow 的 saved model 或者 frozen model, 也可以来自 keras 。 用Flatbuffer序列化模型文件,这种格式磁盘占用少,加

    2024年02月16日
    浏览(32)
  • PyTorch深度学习实战(2)——PyTorch基础

    PyTorch 是广泛应用于机器学习领域中的强大开源框架,因其易用性和高效性备受青睐。在本节中,将介绍使用 PyTorch 构建神经网络的基础知识。首先了解 PyTorch 的核心数据类型——张量对象。然后,我们将深入研究用于张量对象的各种操作。 PyTorch 提供了许多帮助构建神经网

    2024年02月09日
    浏览(39)
  • 快速解决深度学习推理过程cuda或tensorRT推理速度变慢的办法【亲测有效】

    各位朋友,好久不见,距离上一次更博已经过去三月有余。这段时间里博主基于LabVIEW探索开发了一些工具包,包括OpenVIN工具包、TensoRT工具包以及一键训练工具包,这几天会整理一下分享给大家,今天要和大家分享的是好多朋友私信问我的深度学习推理过程中cuda或tensorRT变慢

    2024年02月09日
    浏览(33)
  • Pytorch深度学习 - 学习笔记

    dir() :打开,看见包含什么 help() :说明书 pytorch中读取数据主要涉及到两个类 Dataset 和 Dataloader 。 Dataset可以将可以使用的数据提取出来,并且可以对数据完成编号。即提供一种方式获取数据及其对应真实的label值。 Dataloader为网络提供不同的数据形式。 Dataset Dataset是一个抽

    2024年02月07日
    浏览(44)
  • PyTorch深度学习实战(3)——使用PyTorch构建神经网络

    我们已经学习了如何从零开始构建神经网络,神经网络通常包括输入层、隐藏层、输出层、激活函数、损失函数和学习率等基本组件。在本节中,我们将学习如何在简单数据集上使用 PyTorch 构建神经网络,利用张量对象操作和梯度值计算更新网络权重。 1.1 使用 PyTorch 构建神

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包