PyTorch 模型 onnx 文件导出及调用详情

下面详细讲解“PyTorch 模型 onnx 文件导出及调用详情”的完整攻略。

简介

当我们使用 PyTorch 开发深度学习模型后,通常需要将其部署在其他平台上(如移动端、服务器等),因此需要将 PyTorch 模型转化为通用的模型格式。其中一个通用格式是 ONNX(Open Neural Network Exchange),这种格式的模型可以在不同的平台上导入和导出,并使用相应的平台进行加载和运行。

导出 PyTorch 模型为 ONNX 格式

下面以一个 ResNet18 分类模型为例,展示如何将 PyTorch 模型导出为 ONNX 格式。

import torch
from torchvision.models import resnet18

# 创建一个 ResNet18 分类模型
model = resnet18(pretrained=False)

# 随机生成一张图片
image = torch.rand((1, 3, 224, 224))

# 进行一次前向传播,用于计算图的生成
output = model(image)

# 导出模型为 ONNX 格式
torch.onnx.export(model,               # 要导出的模型
                  image,               # 模型输入数据
                  "resnet18.onnx",     # 导出模型保存路径
                  opset_version=12,    # onnx 版本号
                  input_names=["input"],      # 输入名
                  output_names=["output"],    # 输出名
                  dynamic_axes={
                      "input": {0: "batch_size"},  # 可变维度
                      "output": {0: "batch_size"}
                  })

在上面的示例中,我们首先通过 torchvision 创建一个 ResNet18 模型,然后使用 torch.onnx.export() 将其导出为 ONNX 格式。input_namesoutput_names 分别指定了输入和输出的名字,在后面使用 ONNX 格式的模型进行推理时需要用到。

调用 ONNX 模型进行推理

下面以一个使用 ONNX 模型进行推理的示例来说明如何使用导出的 ONNX 模型。

import onnxruntime as ort
import numpy as np
from PIL import Image
import torch.nn.functional as F

# 加载 ONNX 模型
ort_session = ort.InferenceSession("resnet18.onnx")

# 随机生成一张图片
image = np.random.rand(1, 3, 224, 224).astype(np.float32)

# 使用 ONNX 模型进行推理
ort_inputs = {"input": image}
ort_outputs = ort_session.run(None, ort_inputs)

# 将 ONNX 模型推理结果转化为 PyTorch 则过程
output = F.softmax(torch.tensor(ort_outputs[0]).detach(), dim=1)

print(output)

在这个示例中,我们首先使用 onnxruntime.InferenceSession() 加载 ONNX 模型。然后我们使用 ort_session.run() 方法进行推理,并得到模型的输出。最后,我们将 ONNX 模型推理结果转化为 PyTorch 格式的结果,以便于后续的处理。

模型转换的注意点

在将模型导出为 ONNX 格式时,需要特别注意一下几点。

  1. 模型的输入和输出的名称需要在导出时指定,并在调用时使用。
  2. 模型中使用的运算操作、模块需要在 ONNX 格式中有相应的实现,否则会导致模型无法加载。
  3. PyTorch 中有一些操作,在被导出为 ONNX 格式后,其行为和实现方式可能与原来不同,需要特别关注。

结论

跟随本文的步骤,您可以轻松地将 PyTorch 模型导出为 ONNX 格式,并使用 ONNX 进行模型推理。在导出模型前,需要注意模型输入和输出的名称,导出时需要指定,并在运行模型时使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyTorch 模型 onnx 文件导出及调用详情 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Tensorflow学习教程——利用卷积神经网络对mnist数据集进行分类_训练模型

    原理就不多讲了,直接上代码,有详细注释。 #coding:utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets(‘MNIST_data’,one_hot=True) #…

    卷积神经网络 2023年4月8日
    00
  • 卷积+池化+卷积+池化+全连接2

    #!/usr/bin/env pythonimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# In[2]:mnist = input_data.read_data_sets(‘MNIST_data’, one_hot=True)# 每个批次的大小…

    卷积神经网络 2023年4月8日
    00
  • 集合并卷积

    因为小星星那题才知道有这么个东西。。 下面这段从uoj复制的:http://liu-runda.blog.uoj.ac/blog/2360 题目 给出h[0…(2n)−1],满足h[x]=sigma{f[i]*g[j],1<=i<=n,1<=j<=n,i|j==x} 我们记F[i]=sigma(f[j],j&i==j),G[i…

    卷积神经网络 2023年4月6日
    00
  • 卷积核filter和kernal的区别

    在一堆介绍卷积的帖子中,这篇特别之处在于很萌的示例配色,令人眼前一亮,当然直观也是很直观滴,保证了能在昏昏欲睡见周公子前看完。 types-of-convolution-kernels-simplified-f040cb307c37   直观介绍各种迷人的CNN层 一个简短的介绍 卷积使用“kernel”从输入图像中提取某些“特征”。kernel是一个矩阵,…

    2023年4月8日
    00
  • 卷积神经网络 1*1 卷积核

    卷积神经网络中卷积核的作用是提取图像更高维的特征,一个卷积核代表一种特征提取方式,对应产生一个特征图,卷积核的尺寸对应感受野的大小。 经典的卷积示意图如下: 5*5的图像使用3*3的卷积核进行卷积,结果产生3*3(5-3+1)的特征图像。 卷积核的大小一般是(2n+1)*(2n+1)的奇数乘奇数大小(n>=1),最常用的有3*3,5*5,7*7的。之所…

    2023年4月8日
    00
  • 动态分组卷积-Dynamic Group Convolution for Accelerating Convolutional Neural Networks

    地址:https://arxiv.org/pdf/2007.04242.pdf github:https://github.com/zhuogege1943/dgc/     from __future__ import absolute_import from __future__ import unicode_literals from __future…

    2023年4月8日
    00
  • 用于图像降噪的卷积自编码器

    这篇文章的目的是介绍关于利用自动编码器实现图像降噪的内容。 在神经网络世界中,对图像数据进行建模需要特殊的方法。其中最著名的是卷积神经网络(CNN或ConvNet)或称为卷积自编码器。并非所有的读者都了解图像数据,那么我先简要介绍图像数据(如果你对这方面已经很清楚了,可以跳过)。然后,我会介绍标准神经网络。这个标准神经网络用于图像数据,比较简单。这解释了处理…

    2023年4月8日
    00
  • 如何用Python 实现景区安防系统

    如何用Python实现景区安防系统 介绍 随着旅游业的发展,景区越来越受到人们的欢迎。同时,景区的安全问题也备受关注。为了保障游客的人身财产安全,景区管理部门需要建立一套完善的安防系统。本文将介绍如何用Python实现景区安防系统。 前置条件 在开始实现景区安防系统之前,我们需要准备以下硬件设备: 摄像头(可采用网络摄像头或USB摄像头) 树莓派(作为中心控…

    卷积神经网络 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部