paddlepaddle模型转换onnx指导文档

一、检查本机cuda版本

1、右键找到invdia控制面板

在这里插入图片描述

2、找到系统信息

在这里插入图片描述

3、点开“组件”选项卡, 可以看到cuda版本,我们这里是cuda11.7

在这里插入图片描述

cuda驱动版本为516.94
在这里插入图片描述

二、安装paddlepaddle环境

1、获取pip安装命令 ,我们到paddlepaddle官网,找到cuda对应的安装命令

在这里插入图片描述

因为安装 完成paddlepaddle后还需要安装其他依赖,所以我们加上 -i 指定国内的pip源

python -m pip install -i   https://mirror.baidu.com/pypi/simple  paddlepaddle-gpu==2.5.1.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

2、在anaconda中新建一个python3.9的环境

conda create -n py39_paddle python=3.9

3、切换conda环境到我们新建的环境

conda activate py39_paddle

4、运行pip安装命令

python -m pip install -i   https://mirror.baidu.com/pypi/simple  paddlepaddle-gpu==2.5.1.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.htmlInstalling collected packages: paddle-bfloat, sniffio, protobuf, Pillow, numpy, idna, h11, exceptiongroup, decorator, certifi, astor, opt-einsum, anyio, httpcore, httpx, paddlepaddle-gpu
Successfully installed Pillow-10.0.1 anyio-4.0.0 astor-0.8.1 certifi-2023.7.22 decorator-5.1.1 exceptiongroup-1.1.3 h11-0.14.0 httpcore-0.18.0 httpx-0.25.0 idna-3.4 numpy-1.26.0 opt-einsum-3.3.0 paddle-bfloat-0.1.7 paddlepaddle-gpu-2.5.1.post117 protobuf-3.20.2 sniffio-1.3.0

安装成功!!

三、模型转换

1、安装转换工具paddle2onnx

python -m pip install -i   https://mirror.baidu.com/pypi/simple  paddle2onnx

2.训练模型

import paddle
from paddle.vision.transforms import Normalizetransform = Normalize(mean=[127.5], std=[127.5], data_format='CHW')
# 下载数据集并初始化 DataSet
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)# 模型组网并初始化网络
lenet = paddle.vision.models.LeNet(num_classes=10)
model = paddle.Model(lenet)# 模型训练的配置准备,准备损失函数,优化器和评价指标
model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),paddle.nn.CrossEntropyLoss(),paddle.metric.Accuracy())# 模型训练
model.fit(train_dataset, epochs=5, batch_size=64, verbose=1)
# 模型评估
model.evaluate(test_dataset, batch_size=64, verbose=1)

3.环境报错

在这里插入图片描述
报错内容: cudnn没有装!

4、安装cudnn,cudatookit,参考:cudnn安装指导

https://www.notion.so/3a4f57edc6e54e4eaa63ed86234cf533?pvs=25

5、训练成功!

在这里插入图片描述

6、模型转换

# export to ONNX
save_path = 'onnx.save/lenet1' # 需要保存的路径
x_spec = paddle.static.InputSpec([None, 1, 28, 28], 'float32', 'x') # 为模型指定输入的形状和数据类型,支持持 Tensor 或 InputSpec ,InputSpec 支持动态的 shape。
paddle.onnx.export(lenet, save_path, input_spec=[x_spec], opset_version=14)

在这里插入图片描述
成功生成onnx文件

7、检查转换结果,没有问题

# 导入 ONNX 库
import onnx
# 载入 ONNX 模型
onnx_model = onnx.load("onnx.save/lenet1.onnx")
# 使用 ONNX 库检查 ONNX 模型是否合理
check = onnx.checker.check_model(onnx_model)
# 打印检查结果
print('check: ', check)
check:  None

四、模型精度测试

1、paddlepaddle模型推理

import onnxruntime
import numpy as np
img = np.random.randn(1, 1, 28, 28).astype(np.float32)
lenet.eval()
paddle_input = paddle.to_tensor(img) 
pad_output = lenet(paddle_input)

2、onnx模型推理

ort_session = onnxruntime.InferenceSession('onnx.save/lenet1.onnx',providers=['CPUExecutionProvider', 'CUDAExecutionProvider'])
model_inputs = ort_session.get_inputs()
ort_inputs = {model_inputs[0].name: img}
onnx_output = ort_session.run(['linear_11.tmp_1'], ort_inputs)[0]

### 3、检查推理 结果

paddle.max(pad_output-onnx_output)
Tensor(shape=[], dtype=float32, place=Place(gpu:0), stop_gradient=False,0.00000381)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298973.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2012年认证杯SPSSPRO杯数学建模C题(第二阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现: 从 1984 年的美国洛杉矶奥运会开始,奥运会就不在成为一个“非卖品”,它在向观众诠释更高更快更强的体育精神的同时,也在攫取着巨大的商业价值&#…

idea2023.2.1 java项目-web项目创建-servlet类得创建

如何创建Java项目 1.1 方式1: 1.2 方式: 1.3 方式 如何创建web项目 方式 ----- 推荐 如何创建servlet类 复制6 中得代码 给servlet 配置一个路径 启动tomcat 成功了

【星海随笔】Ubuntu22.04忘记密码

服务器篇: 有问题可留言。 第一步 远程console界面进入该设备 并重启该设备 如果看到这个界面情况 则点击右上角按钮 【发送 CtrlAltDelete】 调出grub启动菜单 NOTE:启动的后半段去点击这个按钮,前半段一直点会一直重启 如果是直连服务器&a…

Linux-4 gcc和makefile

Linux编译器-gcc/g使用 1.设计样例 c语言:linux中用的stdc99版本--可能会出现其他问题 c:Linux中用的stdc11--使用c11版本 Linux没有文件格式的区分,但是编译器区分 gcc编译器的文件格式是filename.c g编译器的文件格式是filename.cc或者fil…

docker的安装及入门指令

目录 一、将docker安装到云服务器步骤 1.更新系统yum版本 2.安装所需依赖 3.添加docker仓库设置(使用的是阿里云) 4.安装docker引擎 5.启动docker并开启自动启动 6. 检查是否安装成功,成功会显示相应版本,否则安装失败 二、docker常用命令 1.从…

Javascript/Node.JS中如何用多种方式避免属性为空(cannot read property of undefined ERROR)

>>>>>>问题 "cannot read property of undefined" 是一个常见的 JavaScript 错误,包含我在内很多人都会遇到,表示你试图访问一个未定义(undefined)对象的属性。这通常是因为你在访问一个不存在的对象…

【第十六篇】使用BurpSuite实现匹配替换(实战案例)

在Burp中可配置匹配和替换规则,当我们使用浏览器请求程序时,这些规则会自动修改我们的请求和响应。 在某些环境下,我们可以修改 IP 地址,让服务器相信我们属于其本地网络,从而实现与原本无法访问的内部基础设施进行通信。下面将以IP欺骗为例进行操作讲解。 如图,admin目…

2024.4.2-[作业记录]-day07-CSS 盒子模型(显示模式、盒子模型)

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 作业 2024.4.2 学习笔记CSS标签元素显示模式1 块元素2 行内元素3 行内块元素4…

蓝桥杯每日一题:公约数(gcd)

题目描述: 给定两个正整数 a 和 b。 你需要回答 q 个询问。 每个询问给定两个整数 l,r,你需要找到最大的整数 x,满足: x 是 a和 b 的公约数。l≤x≤r。 输入格式 第一行包含两个整数 a,b。 第二行包含一个整数 q。 接下来…

Java 设计模式系列:备忘录模式

简介 备忘录模式是一种软件设计模式,用于在不破坏封闭的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定…

Mahalanobis距离(马氏距离)的本质

马氏距离是加权 ℓ 2 \ell_2 ℓ2​范数的特例。 马氏距离是一种基于样本分布的距离,加权矩阵是样本或总体协方差矩阵的逆,其本质为去相关数据标准化,通过数据变换,消除样本中不同特征维度间的相关性和量纲差异。

具有温度系数(Temperature)的Softmax函数

Softmax 函数 softmax 函数是一种激活函数,通常用作神经网络最后一层的输出函数。该函数是两个以上变量的逻辑函数的推广。 Softmax 将实数向量作为输入,并将其归一化为概率分布。 softmax函数的输出是与输入具有相同维度的向量,每个元素的…

hbuilderX创建的uniapp项目转移到vscode

场景:一直使用hbuilderX开发的朋友想转移到vscode获取更好的TypeScript支持,所以想把整个项目目录拖到vscode进行开发,但发现运行不了,提示没有package.json等,并且不能执行pnpm命令 首先,我们先来看一下h…

10.图像高斯滤波的原理与FPGA实现思路

1.概念 高斯分布 图像滤波之高斯滤波介绍 图像处理算法|高斯滤波   高斯滤波(Gaussian filter)包含很多种,包括低通、高通、带通等,在图像上说的高斯滤波通常是指的高斯模糊(Gaussian Blur),是一种高斯低通滤波。通常这个算法也可以用来模…

错误:找不到或无法加载主类(vscode的解决方法)

项目场景: 某天,喵某人在敲代码的过程中,点击运行代码,突然显示找不到或无法加载主类。之前创建的java文件都可以正常运行。但新建的java文件无论是什么,点击运行都会显示“错误:找不到或无法加载主类”。 …

【Docker系列】在 Linux 上安装 Docker Compose 的简明步骤

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于单片机多功能数字钟系统仿真设计

**单片机设计介绍,基于单片机多功能数字钟系统仿真设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机多功能数字钟系统仿真设计是一个结合了硬件仿真、软件编程和时钟管理技术的综合性项目。以下是对该设计项目的概…

在CentOS 7上安装Python 3.7.7

文章目录 一、实战步骤1. 安装编译工具2. 下载Python 3.7.7安装包3. 上传Python 3.7.7安装包4. 解压缩安装包5. 切换目录并编译安装6. 配置Python环境变量7. 使配置生效8. 验证安装是否成功 二、实战总结 一、实战步骤 1. 安装编译工具 在终端中执行以下命令 yum -y groupin…

小林coding图解计算机网络|基础篇02|键入网址到网页显示,期间发生了什么?

小林coding网站通道:入口 本篇文章摘抄应付面试的重点内容,详细内容还请移步:小林coding网站通道 文章目录 孤单小弟——HTTP真实地址查询——DNS指南好帮手——协议栈可靠传输——TCP远程定位——IP两点传输——MAC出口——网卡送别者——交…

顺序表的应用

文章目录 目录1. 基于动态顺序表实现通讯录项目2.顺序表经典算法2.1 [移除元素](https://leetcode.cn/problems/remove-element/description/)2.2 [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/description/) 3. 顺序表的问题及思考 目录 基于动态顺序…