继开 | 博客

热爱生活,努力学习,实现自己的价值


  • 短诗的序

  • 迷途自渡

  • 寒星三两

  • 林深见鹿

  • 记昨日书

  • 顾探往昔

Api 免费Api接口汇总

发表于 2023-06-03
字数统计: 507 字 | 阅读时长 ≈ 2 min

UomgAPI

稳定、快速、免费的 API 接口服务

https://api.uomg.com/

极速数据

https://www.jisuapi.com/api/?isfree=1

小白api接口

稳定、快速、免费的 API 接口服务共收录了 32 个接口项目

https://api.xiaobaibk.com/

网易云音乐api

https://binaryify.github.io/NeteaseCloudMusicApi/#/

其他免费接口api

猫眼电影接口:

正在热映:

https://m.maoyan.com/ajax/movieOnInfoList

影院:

https://m.maoyan.com/ajax/filterCinemas?ci=57

参数:ci ⇒ 城市id

影院详情:

https://m.maoyan.com/ajax/cinemaDetail?cinemaId=890

参数:cinemaId ⇒ 影院id

即将上映:

https://m.maoyan.com/ajax/comingList?ci=10&token=&limit=10

参数:

ci ⇒ 城市id

limit ⇒ 请求几条

电影详情:

https://m.maoyan.com/ajax/detailmovie?movieId=1203734

B站视频接口:

推荐视频

https://www.bilibili.com/index/ding.json

默认搜索词

http://api.bilibili.cn/x/web-interface/search/default

搜索热词

https://s.search.bilibili.com/main/hotword

分区视频排行榜

https://api.bilibili.com/x/web-interface/ranking

网易新闻接口:

http://c.m.163.com/nc/article/headline/T1348647853363/0-40.html 头条

http://c.3g.163.com/nc/article/list/T1467284926140/0-20.html 精选

http://c.3g.163.com/nc/article/list/T1348648517839/0-20.html 娱乐

http://c.m.163.com/nc/auto/list/5bmz6aG25bGx/0-20.html 汽车

http://c.m.163.com/nc/auto/list/6YOR5bee/0-20.html 新闻

http://c.m.163.com/nc/auto/list/6YOR5bee/20-20.html 新闻

http://c.3g.163.com/nc/article/list/T1348649079062/0-20.html 运动

http://c.m.163.com/recommend/getChanListNews?channel=T1457068979049&size=20 视频

360图片接口:

获取某类壁纸:

http://wallpaper.apc.360.cn/index.php?c=WallPaperAndroid&a=getAppsByCategory&cid=9&start=0&count=99

total:返回数据数量

data:返回的数据

pid:

cid:类别ID

url:壁纸地址

fav_total:收藏数

搜索壁纸:

http://wallpaper.apc.360.cn/index.php?c=WallPaper&a=search&start=0&count=99&kw=毕业&start=0&count=99

kw:关键字

start:跳过的记录数

count:返回的数量

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Office Office2019操作反应慢处理办法

发表于 2023-05-27
字数统计: 357 字 | 阅读时长 ≈ 1 min

问题

office2019操作反应慢,在输入文字,复制粘贴,滑动查看文档的时候都出现的操作延迟的现象

原因

office2019 被微软反向优化,开启了硬件加速

解决办法

禁用 硬件加速

硬件图形加速问题,打开Word,点击左上角—>文件—>选项—>高级,一直拉到“显示”那里,有一个“禁用图形硬件加速”的选项,勾选这个选线,确定保存,重新启动Word即可解决输入时卡顿的问题。

1.禁用”硬件加速”:

word选项–高级–显示–禁用硬件图形加速,把这个选中试试

但有些系统发现Word2019 Word2021 没有这个禁用硬件图形加速,但同电脑的PPT却有这个选项。

2)禁用‘子像素定位平滑屏幕上的字体’:

word选项–高级–显示–使用子像素定位平滑屏幕上的字体,把这个勾去掉。

(2019步骤):进入word=》文件=》选项=》高级=》勾选 禁用硬件图形加速=》确定

其他解决办法

解决办法参考地址:
https://zhuanlan.zhihu.com/p/381882825?ivk_sa=1024320u

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

VScode VScode如何设置中文

发表于 2023-05-26
字数统计: 243 字 | 阅读时长 ≈ 1 min

问题

在众多编辑器中,VScode(Visual Studio Code)是备受推崇的一款免费开源的编辑器,拥有丰富的功能和可扩展性。然而,对于一些使用中文的用户来说,刚开始使用VScode时,可能会遇到中文显示异常或乱码的问题。

解决办法

安装中文插件
如果上述方法不起作用,我们可以考虑安装中文插件。打开插件市场,搜索“Chinese”或“中文”,会出现很多中文插件,选择一个评分高的插件进行安装并重启VScode即可。

其他解决办法

解决办法参考地址:
https://www.jiandaoyun.com/fe/vscoderh/

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

VMware VMware Workstation与Device Credential Guard 不兼容

发表于 2023-05-25
字数统计: 365 字 | 阅读时长 ≈ 1 min

问题

新安装的 VMware Workstation,在安装虚拟机的时候报错 VMware Workstation 与 Device/Credential Guard 不兼容。

原因

windows 开启了自带的虚拟机Hyper-V

解决办法

方法一:
背景:如果使用的是win10专业版,那么直接:
(1)控制面板——程序——打开或关闭windows功能,选择勾选Hyper-V,确定禁用该服务即可;
(2)重启电脑,再启动VM虚拟机。

但是找了半天没找到Hyper-V这个选项,查了VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VMware
第二步需要用到的禁用Device Guard:[win+R] 打开输入 gpedit.msc ,依次 本地计算机策略 –> 计算机配置 –> 管理模板>系统 –> Device Guard,将 基于虚拟化的安全设置 设置为 “已禁用”。

方法二:
1、按下WIN+R打开运行,然后输入services.msc回车;
2、在服务中找到 HV主机服务,双击打开设置为禁用
3、win+x,然后打开powershell(管理员)运行命令bcdedit /set hypervisorlaunchtype off。
4、重启电脑,大功告成。

其他解决办法

解决办法参考地址:
https://blog.csdn.net/qq_35812205/article/details/121050789

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Python Python基本命令数组的一些操作

发表于 2023-05-22
字数统计: 1,581 字 | 阅读时长 ≈ 7 min

环境

window10
python = 3.7

命令

reshape 将数组转换为二维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 导入需要用到的package
import numpy as np
import json

# 假设 data 是一维数组
datatest = np.array([4, 3, 2, 5, 1,6])
# 如果 data 有一个特征,可以使用 reshape(-1, 1) 将其转换为二维数组
data_2d1 = datatest.reshape(-1, 1)
print("#################### data_2d1 ####################")
print(data_2d1)
# 如果 data 只有一个样本,可以使用 reshape(1, -1) 将其转换为二维数组
data_2d2 = datatest.reshape(1, -1)
print("#################### data_2d2 ####################")
print(data_2d2)
# 想获得,两个样本,每个样本三个数据,可以使用 reshape(2, 3) 将其转换为二维数组
data_2d3 = datatest.reshape(2, 3)
print("#################### data_2d3 ####################")
print(data_2d3)
# 想获得,三个样本,每个样本俩个数据,可可以使用 reshape(3,2) 将其转换为二维数组
data_2d4 = datatest.reshape(3,2)
print("#################### data_2d4 ####################")
print(data_2d4)

输出如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#################### data_2d1 ####################
[[4]
[3]
[2]
[5]
[1]
[6]]
#################### data_2d2 ####################
[[4 3 2 5 1 6]]
#################### data_2d3 ####################
[[4 3 2]
[5 1 6]]
#################### data_2d4 ####################
[[4 3]
[2 5]
[1 6]]

max(axis=0)和min(axis=0) 获得二维数组中,样本的最大值和最小值,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 导入需要用到的package
import numpy as np
import json

# 假设 data 是二维数组
datatest2 = np.array([[4,3],[2,5],[1,6]])

maximums1, minimums1 = datatest2.max(axis=0), datatest2.min(axis=0)

print("#################### maximums1 ####################")
print(maximums1)
print("#################### minimums1 ####################")
print(minimums1)

```
输出为

#################### maximums1 ####################
[4 6]
#################### minimums1 ####################
[1 3]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


#### 数组内冒号的用法

##### 数组内单冒号的用法 [:]
```
# 导入需要用到的package
import numpy as np
import json

# 假设 data 是一维数组,其长度为 n
datatest = np.array([4, 3, 2, 5, 1,6])

#数字在前,且为正整数,一个冒号在后,则是表示,取以左侧数字为数组下标以及以后的数字(包含下标)
dataMh1 = datatest[1:]
print("#################### dataMh1 ####################")
print(dataMh1)
#一个冒号在后,数字在后,且为正整数,则是表示,取以右侧侧数字为数组下标以及以前的数字(不包含下标)
dataMh2 = datatest[:3]
print("#################### dataMh2 ####################")
print(dataMh2)
#数字在前,且为负整数,一个冒号在后,则是表示,取以数组长度加数字(负数数字)右侧数字为数组下标以及以后的数字(包含下标) 6 +(-1)=5 即 datatest[-1:] = datatest[5:]
dataMh3 = datatest[-1:]
dataMh33 = datatest[5:]
print("#################### dataMh3 ####################")
print(dataMh3)
print(dataMh33)
#一个冒号在后,数字在后,且为负整数,则是表示,取以数组长度加数字(负数数字)右侧数字为数组下标以及以前的数字(包含下标) 6 +(-1)=5 即 datatest[:-1] = datatest[:5]
dataMh4 = datatest[:-1]
dataMh44 = datatest[:5]
print("#################### dataMh4 ####################")
print(dataMh4)
print(dataMh44)
1
2
3
4
5
6
7
8
9
10
#################### dataMh1 ####################
[3 2 5 1 6]
#################### dataMh2 ####################
[4 3 2]
#################### dataMh3 ####################
[6]
[6]
#################### dataMh4 ####################
[4 3 2 5 1]
[4 3 2 5 1]
数组内双冒号的用法 [::]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 导入需要用到的package
import numpy as np
import json

# 假设 data 是一维数组
datatest = np.array([4, 3, 2, 5, 1,6])

# 两个冒号在前,一个正整数数字在后,取数组,每一个下标为该数字倍数的数组,组成新的数组 (第一个数下表为0 也包含)
data2Mh1 = datatest[::1]
print("#################### data2Mh1 ####################")
print(data2Mh1)
# 两个冒号在前,一个正整数数字在后,取数组,每一个下标为该数字倍数的数组,组成新的数组 (第一个数下表为0 也包含)
data2Mh2 = datatest[::2]
print("#################### data2Mh2 ####################")
print(data2Mh2)
#两个冒号在后,一个正整数数字在后,取以左侧数字为数组下标以及以后的数字(包含下标)
data2Mh3 = datatest[1::]
print("#################### data2Mh3 ####################")
print(data2Mh3)
#两个冒号在后,一个正整数数字在后,取以左侧数字为数组下标以及以后的数字(包含下标)
data2Mh4 = datatest[2::]
print("#################### data2Mh4 ####################")
print(data2Mh4)

#两个冒号在后,一个负整数数字在后,先将数组数据倒叙排列,每一个下标为该数字倍数的数组,组成新的数组 (第一个数下表为0 也包含)
data2Mh5 = datatest[::-1]
print("#################### data2Mh5 ####################")
print(data2Mh5)
#两个冒号在后,一个负整数数字在后,先将数组数据倒叙排列,每一个下标为该数字倍数的数组,组成新的数组 (第一个数下表为0 也包含)
data2Mh6 = datatest[::-2]
print("#################### data2Mh6 ####################")
print(data2Mh6)
##数字在前,且为负整数,两个冒号在后,则是表示,取以数组长度加数字(负数数字)右侧数字为数组下标以及以后的数字(包含下标) 6 +(-1)=5 即 datatest[-1::] = datatest[5:]
data2Mh7 = datatest[-1::]
data2Mh77 = datatest[5:]
print("#################### data2Mh7 ####################")
print(data2Mh7)
print(data2Mh77)
##数字在前,且为负整数,两个冒号在后,则是表示,取以数组长度加数字(负数数字)右侧数字为数组下标以及以后的数字(包含下标) 6 +(-2)=4 即 datatest[-2::] = datatest[4:]
data2Mh8 = datatest[-2::]
data2Mh88 = datatest[4:]
print("#################### data2Mh8 ####################")
print(data2Mh8)
print(data2Mh88)

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#################### data2Mh1 ####################
[4 3 2 5 1 6]
#################### data2Mh2 ####################
[4 2 1]
#################### data2Mh3 ####################
[3 2 5 1 6]
#################### data2Mh4 ####################
[2 5 1 6]
#################### data2Mh5 ####################
[6 1 5 2 3 4]
#################### data2Mh6 ####################
[6 5 3]
#################### data2Mh7 ####################
[6]
[6]
#################### data2Mh8 ####################
[1 6]
[1 6]
二维数组数组内双冒号的用法 [1:,1:]

逗号前的为对一维数组操作
逗号后的为对二位数组操作

1
2
3
4
5
6
7
8
9
10
# 导入需要用到的package
import numpy as np
import json

# 假设 data 是二维数组
datatest3 = np.array([[4,3],[2,5],[1,6]])

data2data = datatest3[1:,1:]
print("#################### data2data ####################")
print(data2data)

输出为

1
2
3
#################### data2data ####################
[[5]
[6]]

dot 数组相乘

1
2
3
4
5
6
7
8
9
10
11
# 导入需要用到的package
import numpy as np
import json
print("#################### dot ####################")

# 等于 3*2+1*1+1*1+1*1+1*1 = 10
a = np.array([3, 1, 1, 1, 1])
b = np.array([2, 1, 1, 1, 1])
print(np.dot(a, b))
```
输出为

#################### dot ####################
10

```

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Python Vscode中开发python时pylance误报错误

发表于 2023-05-21
字数统计: 264 字 | 阅读时长 ≈ 1 min

报错

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 静态图导出的ONNX模型测试
import time
import paddle
import numpy as np
from paddle.vision.transforms import Compose, Normalize
from paddle.metric import Accuracy
from onnxruntime import InferenceSession
import cv2

# 加载ONNX模型
model = InferenceSession('./testfive/onnxSave/linear_net.onnx')
#model = InferenceSession('./testfive/onnx/test.onnx')

#model.eval() # 设置为预测模型

# 使用transform对数据集做归一化
transform = Compose([Normalize(mean=[127.5], std=[127.5], data_format='CHW')])
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)
# train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)

报错

1
"vision" is not a known member of modulePylancereportGeneralTypeIssues

解决

在vscode的settings.json文件中添加以下内容

1
"python.analysis.diagnosticSeverityOverrides": {"reportGeneralTypeIssues":"none"},

在vscode的settings.json文件中添加以下内容

"python.linting.pylintArgs": ["--generate-members"],

参考地址:
https://www.jianshu.com/p/89dbf4946adf

https://blog.csdn.net/weixin_44479045/article/details/106324096

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Python Paddlepaddle模型转onnx模型并验证

发表于 2023-05-20
字数统计: 680 字 | 阅读时长 ≈ 3 min

代码方式转化

注意定义输入个数据格式地方,InputSpec([1, 1, 28, 28], ‘float32’, ‘x’) ,此处按照实际情况编写,和后面的使用的输入要保持一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os
import time
import paddle
from paddle.static import InputSpec

model = paddle.jit.load("./testfive/mnist_checkpoint/test")
model.eval() # 设置为预测模型

# 将模型设置为评估状态
model.eval()

# 定义输入数据

#x_spec = InputSpec([None, 784], 'float32', 'x')
x_spec = InputSpec([1, 1, 28, 28], 'float32', 'x')
# ONNX模型导出
paddle.onnx.export(model, './testfive/onnxSave/linear_net',input_spec=[x_spec])

输出

1
2
3
4
5
6
7
8
9

[INFO] Static PaddlePaddle model saved in ./testfive/onnx.save\paddle_model_static_onnx_temp_dir.
[Paddle2ONNX] Start to parse PaddlePaddle model...
[Paddle2ONNX] Model file path: ./testfive/onnx.save\paddle_model_static_onnx_temp_dir\model.pdmodel
[Paddle2ONNX] Paramters file path: ./testfive/onnx.save\paddle_model_static_onnx_temp_dir\model.pdiparams
[Paddle2ONNX] Start to parsing Paddle model...
[Paddle2ONNX] Use opset_version = 9 for ONNX export.
[Paddle2ONNX] PaddlePaddle model is exported as ONNX format now.
[INFO] ONNX model saved in ./testfive/onnx.save/linear_net.onnx.

保存文件的地址

1
D:\vsCodeWorkspace\pythonpaddleNumber\testfive\onnxSave\linear_net.onnx

模型验证

1
2
3
4
5
6
7
8
9
10
# 导入 ONNX 库
import onnx
# 载入 ONNX 模型
#onnx_model = onnx.load("./testfive/onnx/test.onnx")
onnx_model = onnx.load("./testfive/onnxSave/linear_net.onnx")

# 使用 ONNX 库检查 ONNX 模型是否合理
onnx.checker.check_model(onnx_model)

# onnx.checker.check_model 不报错则证明onnx 网格没问题

运行之后 onnx.checker.check_model 不报错则证明没有任何问题

模型使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 静态图导出的ONNX模型测试
import time
import paddle
import numpy as np
from paddle.vision.transforms import Compose, Normalize
from paddle.metric import Accuracy
from onnxruntime import InferenceSession
import cv2

# 加载ONNX模型
model = InferenceSession('./testfive/onnxSave/linear_net.onnx')
#model = InferenceSession('./testfive/onnx/test.onnx')

#model.eval() # 设置为预测模型

# 使用transform对数据集做归一化
transform = Compose([Normalize(mean=[127.5], std=[127.5], data_format='CHW')])
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)
# train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)

img1,label1 = test_dataset[0];

x = np.array([img1])
print(x.shape)

print("x---------------------------------------------")
#print(x)
#pre = model.run(output_names=None, input_feed={'inputs': img1})
pre = model.run(output_names=None, input_feed={'x': x})
print("预测数字:", np.argmax(pre)) # 输出预测数字

print("真实数字:", label1) # 输出真实数字

注意 x.shape 必须为上述要求的输入格式,不然会有下面的报错

1
2
INVALID_ARGUMENT : Invalid rank for input: modelInput Got: 3 Expected: 4 
Please fix either the inputs or the model

输出

[W:onnxruntime:, graph.cc:108 onnxruntime::MergeShapeInfo] Error merging shape info for output. 'translated_layer/scale_0.tmp_1' source:{1,10} target:{64,10}. Falling back to lenient merge.
x1---------------------------------------------
(1, 1, 28, 28)
x---------------------------------------------
预测数字: 7
真实数字: [7]

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Python Paddlepaddle模型转onnx模型

发表于 2023-05-19
字数统计: 1,031 字 | 阅读时长 ≈ 5 min

环境准备

python3.7
paddlepaddle
paddle2onnx

安装paddle2onnx

1
pip install paddle2onnx

命令行转化

准备好 paddlepaddle 训练好的模型文件

1
2
3
D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint\test.pdiparams
D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint\test.pdiparams.info
D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint\test.pdmodel

执行命令

1
paddle2onnx  --model_dir D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint --model_filename test.pdmodel --params_filename test.pdiparams --opset_version 11 --save_file ./onnx/test.onnx

注意 model_filename 和 params_filename 虽标注为可选项,但实际测试中发现若无此参数会报错

参数说明:
https://github.com/PaddlePaddle/Paddle2ONNX

参数 参数说明
–model_dir 配置包含 Paddle 模型的目录路径
–model_filename [可选] 配置位于 --model_dir 下存储网络结构的文件名
–params_filename [可选] 配置位于 --model_dir 下存储模型参数的文件名称
–save_file 指定转换后的模型保存目录路径
–opset_version [可选] 配置转换为 ONNX 的 OpSet 版本,目前支持 7~16 等多个版本,默认为 9
–enable_dev_version [可选] 是否使用新版本 Paddle2ONNX(推荐使用),默认为 True
–enable_onnx_checker [可选] 配置是否检查导出为 ONNX 模型的正确性, 建议打开此开关, 默认为 False
–enable_auto_update_opset [可选] 是否开启 opset version 自动升级功能,当低版本 opset 无法转换时,自动选择更高版本的 opset进行转换, 默认为 True
–deploy_backend [可选] 量化模型部署的推理引擎,支持 onnxruntime、tensorrt 或 others,当选择 others 时,所有的量化信息存储于 max_range.txt 文件中,默认为 onnxruntime
–save_calibration_file [可选] TensorRT 8.X版本部署量化模型需要读取的 cache 文件的保存路径,默认为 calibration.cache
–version [可选] 查看 paddle2onnx 版本
–external_filename [可选] 当导出的 ONNX 模型大于 2G 时,需要设置 external data 的存储路径,推荐设置为:external_data
–export_fp16_model [可选] 是否将导出的 ONNX 的模型转换为 FP16 格式,并用 ONNXRuntime-GPU 加速推理,默认为 False
–custom_ops [可选] 将 Paddle OP 导出为 ONNX 的 Custom OP,例如:–custom_ops ‘{“paddle_op”:”onnx_op”},默认为 {}
  • 使用 onnxruntime 验证转换模型, 请注意安装最新版本(最低要求 1.10.0)

执行结果如下

1
2
3
4
5
6
7
8
[Paddle2ONNX] Start to parse PaddlePaddle model...
[Paddle2ONNX] Model file path: D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint\test.pdmodel
[Paddle2ONNX] Paramters file path: D:\vsCodeWorkspace\python20230512paddleNumber\testfive\mnist_checkpoint\test.pdiparams
[Paddle2ONNX] Start to parsing Paddle model...
[Paddle2ONNX] Use opset_version = 11 for ONNX export.
[Paddle2ONNX] PaddlePaddle model is exported as ONNX format now.
[INFO] ===============Make PaddlePaddle Better!================
[INFO] A little survey: https://iwenjuan.baidu.com/?code=r8hu2s

获得onnx 的输出文件

1
D:\vsCodeWorkspace\python20230512paddleNumber\testfive\onnx\test.onnx

代码方式转化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os
import time
import paddle
from paddle.static import InputSpec

model = paddle.jit.load("./testfive/mnist_checkpoint/test")
model.eval() # 设置为预测模型

# 将模型设置为评估状态
model.eval()

# 定义输入数据

x_spec = InputSpec([None, 784], 'float32', 'x')
# ONNX模型导出
paddle.onnx.export(model, './testfive/onnxSave/linear_net',input_spec=[x_spec])

输出

1
2
3
4
5
6
7
8
9

[INFO] Static PaddlePaddle model saved in ./testfive/onnx.save\paddle_model_static_onnx_temp_dir.
[Paddle2ONNX] Start to parse PaddlePaddle model...
[Paddle2ONNX] Model file path: ./testfive/onnx.save\paddle_model_static_onnx_temp_dir\model.pdmodel
[Paddle2ONNX] Paramters file path: ./testfive/onnx.save\paddle_model_static_onnx_temp_dir\model.pdiparams
[Paddle2ONNX] Start to parsing Paddle model...
[Paddle2ONNX] Use opset_version = 9 for ONNX export.
[Paddle2ONNX] PaddlePaddle model is exported as ONNX format now.
[INFO] ONNX model saved in ./testfive/onnx.save/linear_net.onnx.

保存文件的地址

1
D:\vsCodeWorkspace\pythonpaddleNumber\testfive\onnxSave\linear_net.onnx

模型验证

1
2
3
4
5
6
7
8
9
10
# 导入 ONNX 库
import onnx
# 载入 ONNX 模型
#onnx_model = onnx.load("./testfive/onnx/test.onnx")
onnx_model = onnx.load("./testfive/onnxSave/linear_net.onnx")

# 使用 ONNX 库检查 ONNX 模型是否合理
onnx.checker.check_model(onnx_model)

# onnx.checker.check_model 不报错则证明onnx 网格没问题

运行之后 onnx.checker.check_model 不报错则证明没有任何问题

报错问题解决

问题1

将训练的模型转化为.onnx文件,然而,在模型验证的时候报错,错误如下:

1
ValidationError: Your model ir_version is higher than the checker's

解决问题1

原因:版本不匹配
需要升级一下onnx

1
pip install --upgrade onnx  -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

升级之后就不会报错了。

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

1…678…38

继开

一辈子很短,努力的做好两件事就好:第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。

303 日志
171 标签
RSS
gitee E-Mail
0%
鲁ICP备18007712号
© 2025 继开 | 站点字数统计: 262.2k
博客使用 Hexo 搭建
|
主题 — NexT.Mist v5.1.4
人访问 次查看