【深度学习基础】Pytorch框架CV开发(2)实战篇
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处
文章目录
- 人工神经网络识别手写数字
- 使用卷积神经网络识别手写数字
- ONNX模型导出与推理
人工神经网络识别手写数字
Mnist数据集介绍:MNIST数据集是一个入门级的计算机视觉数据集,可以广泛应用于机器学习的训练和测试。它包含各种尺寸是28*28的手写数字图片,其中有60000个训练样本集和10000个测试样本集。这个数据集是由来自250个不同人手写的数字构成的,一般来自高中生和工作人员,保证了其多样性。每张图片都是二进制存储,格式为灰度图像,其标签是1×784的数字出现概率。
构建识别数字手写体的人工神经网络
其中,隐藏层一共100个结点(神经元),输出层一共10个结点,代表10个类别。输入一共784个像素点。
模型训练过程的设置
1.超参数设置:主要是批次和学习率。
2.优化器的选择:求梯度的方法选择,更新参数更好。
3.训练epoch:所有数据训练完一次就是一个epoch。
模型训练代码解读:
模型测试代码解读:
模型加载也可以理解为模型推理。
预测和推理时候的数据输入格式要跟训练的时候保持一致。也就是说两者对图像的预处理方式要完全相同。
模型保存方式:一共两种。
方法1:Torch.save(model,path);
方法2:Torch.save(model.state_dict(),path)
☆第二种方法相比第一种保存了模型的参数。推荐使用第二种。
模型加载方式:一共两种。
方法1:对应保存模型的方法1
model=torch.load(path)
Model.eval()
方法2:对应保存模型的方法2,用于加载保存了参数的模型。
model=model.load_state_dict(torch.load(path))
Model.eval()
eval函数的作用:网络的某些层(dropout / bn)在训练时候需要用到,但是在测试的时候需要修改一些参数才能预测准确,而修改参数就是这个eval函数的作用。
使用卷积神经网络识别手写数字
网络结构 构建卷积神经网络来识别手写数字,其网络结构如下图所示: 由卷积层、池化层、激活函数和全连接层组成。
解读网络结构图:
weighut(8x1x3x3)表示输入图像为单通道,因此卷积核也是单通道,大小为3X3。一共8个卷积核,因此输出8张特征图,理解为8通道。Bias(8)表示每个卷积核携带一个偏置,一共八个。
weighut(32x8x3x3)表示输入图像是8通道的,因此需要八通道的卷积核来过滤,大小为3X3。一共32个卷积核,因此输出32张特征图,理解为32通道。Bias(32)表示每个卷积核携带一个偏置,一共32个。
经过上述的操作后生成7X7(尺寸)X32(通道数)的特征图,作为全连接层的输入。第一个全连接层输出200个参数,经过激活函数后;进入第二个全连接层,输出100个参数,再次经过激活函数;进入第三个全连接层,输出10个参数,也就是通过logsoftmax判断这个输入数字跟0-9之间的置信度,越高说明越接近这个真实值。
根据结构图编写代码

对所构建的模型进行训练与测试
1.选择损失函数:交叉熵损失函数
2.选择优化器:Adam 关于优化器的选择问题,目前证明Adam的效果要比SGD的要好。
3.模型训练:选择使用GPU
4.模型保存
5.模型加载和测试



ONNX模型导出与推理
ONNX简介:模型一般保存为pt或是pth格式,而其他深度学习框架的格式又有所不同,因此为了部署的时候可以使用通用的格式,推出了ONNX格式。
因此需要将Pytorch模型转换为ONNX格式,也就是pt或是pth格式转换为ONNX格式 ONNX介绍:ONNX,全称Open Neural Network Exchange,即开放神经网络交换,是一个开放的生态系统。它使人工智能开发人员在推进项目时能够自由选择工具,不会受到特定框架或生态系统的限制。ONNX本质上是一种针对机器学习所设计的开放式的文件格式,主要用于存储训练好的模型。其核心作用在于为不同的深度学习框架(如Pytorch,
MXNet等)提供一个共同的中间表示格式,使得这些框架可以进行模型之间的转换。
ONNX格式在opencv和openvino上都可以运行。ONNX格式模型转换方法
例如:
首先,使用load_state_dict(状态字典)函数加载模型。
然后,使用torch.onnx.export函数进行转换。
注意在转换函数中需要填入第二个参数,这个参数要求格式为输入图像跟训练时一样,也就是1X1X28X28。并且是张量数据类型。
第三个参数是转换后的模型名称。
ONNX格式模型在opencv中使用
思考感悟 反思卷积神经网络比人工神经网络的优越性: 人工神经网络工作前提通过全像素提取特征,然后多层感知机进行分类。 卷积神经网络通过卷积提取特征,然后使用全连接层进行分类。 卷积层提取特征的能力要比人工神经网络好很多。 卷积核的通道数越多,能力越强。
模型转换过程中,一定要先执行eval(),才能正确导出。
相关文章:
【深度学习基础】Pytorch框架CV开发(2)实战篇
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
C语言--输出1-100以内同时能被3和5整除的数
首先我们要有1-100的数字. for(int i1;i<100;i) 如何表示同时能被3和5同时整除呢? 如果这个数i,i%30&&i%50,那么这个数就可以同时被3和5整除 if(i%30&&i%50) 最后输出即可 完整代码: #include<stdio.h> void Sh…...
Linux--jdk、tomcat、环境配置,mysql安装、后端项目搭建
前言 上期我们讲到了安装linux虚拟机,这期我们来讲一下如何使用xshell和xftp在linux系统上搭建我们的单体项目 一、软件的传输 1.1 xftp Xftp是一款功能强大的文件传输软件,用于在本地主机和远程服务器之间进行快速、安全的文件传输。它是由南京帆软科…...
NOIP2023模拟10联测31 迷路
题目大意 你在野外迷路了, 你手里只有一张你当前所在的区域的地图。地图将整个区域表示为 n m n\times m nm的网格,你就在其中的某一个格子里。每个格子里要么有树,要么就什么都没有。地图显示了每个格子中是有树还是空的。当然,地图只记载…...
React Query + Redux toolkit 封装异步请求
当你需要进行 Redux 和 React Query 的组合时,除了常规的 Redux 方法(例如手动派发 action 和更新 state),还可以使用 createSlice 和 React Query 进行组合,这可以让你更方便地封装异步请求和更容易地更新状态。 使用…...
CSS基础知识点速览
1 基础认识 1.1 css的介绍 CSS:层叠样式表(Cascading style sheets) CSS作用: 给页面中的html标签设置样式 css写在style标签里,style标签一般在head标签里,位于head标签下。 <style>p{color: red;background-color: green;font-size…...
Windows 时间服务配置和配置工具
文章目录 Windows 时间服务保留Portw32tm 命令配置 Windows 时间服务配置客户端使用两个时间服务器配置客户端自动从域源同步时间检查客户端时间配置使用本地组策略编辑器配置Windows 时间注册表参考推荐阅读 Windows 时间服务 (W32Time) 为 Active Directory 域服务 (AD DS) 管…...
cmake find_package、引用GDAL 初步学习
上次的源码的CMakeLists.txt文件里有 find_package(GDAL REQUIRED) 这句; 从字面意思看此源码需要GDAL库; 查了一下,find_package 指令的基本功能是查找第三方库,并返回其细节; 我当前GDAL安装在D:\GDAL; 先把它的CMakeLists.txt重命名为别的,不使用; 新建一个C…...
紫光同创FPGA编写的8画面分割器演示
适用于板卡型号: 紫光同创PGL50H开发平台(盘古50K开发板) 图(1) 盘古50K开发板 TOP 层逻辑框 图(2) TOP层逻辑框 video_copy_ux 将输入的一路RGB888信号复制成8份,每份画面内容相同,各路颜色有些差异: 第…...
openLayers--绘制多边形、获取视图的中心点、获取当前地图等级、设置地图等级
openLayers绘制多边形、获取视图中心点 前言效果图1、导入LineString2、创建添加多边形3、定义多变形样式4、获取当前视图的中心点5、获取当前视图等级6、设置地图等级 前言 上一篇文章在vue项目中绘制了openlayers绘制了地图和标记点,本篇文章讲解openlayers绘制多…...
CSP-31补题日记--梯度求解
202309-3-梯度求解 题目链接 http://118.190.20.162/view.page?gpidT173 最近刚刚在上数据结构二叉树 跟这道题真的是强相关 然后在就是涉及到了数学求导 这基本上是我复学两个月做的最久的题了 感觉做完这道题对栈和二叉树理解比以前清晰了很多 不摆了 上代码 ** 题目思路&am…...
MySQL 8.0.32 union 语句中文查不到数据
关键字 MySQL union 语句,中文查不到数据 问题描述 MySQL 8.0.32 union 语句,中文查不到数据 解决问题思路 1、Create a table test with two fields, such as id and name mysql>create table test ( id int unsigned auto_increment key, name…...
FlinkCDC系列:通过skipped.operations参数选择性处理新增、更新、删除数据
在flinkCDC源数据配置,通过debezium.skipped.operations参数控制,配置需要过滤的 oplog 操作。操作包括 c 表示插入,u 表示更新,d 表示删除。默认情况下,不跳过任何操作,以逗号分隔。配置多个操作ÿ…...
高压检测设备
比如:高压数字表、高压差分探头、指针式高压表、电流探枪、高压探棒 这些设备都是用来测量高压的,有的测电压,有的测电流。 高压数字表: 单独使用,功能很简单,有2个正负极探爪,把2个探爪连接到…...
Vue3问题:如何实现组件拖拽实时预览功能?
前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约3000字,整篇阅读大约需要5分钟。 本文主要内容分三部分,第一部分是需求分析,第二部分是实现步骤,第三部分是问题详解。 …...
基于jsp的采购管理系统的分析与实现
物资采购管理系统是针对内部而设计的,应用于的局域网,这样可以使得内部管理更有效的联系起来。企业采购管理系统是将IT技术用于企业采购信息的管理, 它能够收集与存储企业采购的档案信息,提供更新与检索企业采购信息档案的接口;提…...
react配置二级路由
1.在createBrowserRouter上添加basename属性,比如 const RouterRender createBrowserRouter([{path: /,element: <App><Login></Login></App>},...SystemRouter,...InventoryRouter,...FlowManageRouter,{path: "*",element: &…...
C++ 模板特化
非类型模板参数 定义:对于函数模板和类模板,模板参数并不局限于类型,普通值也可以作为模板参数 非类型模板参数定义的是常量 template<typename T, size_t N> class array; //T:类型模板参数 //N:非类型模板参…...
Spring-createBean部分源码
createBean源码: /*** Central method of this class: creates a bean instance,* populates the bean instance, applies post-processors, etc.* see #doCreateBean*/ Override protected Object createBean(String beanName, RootBeanDefinition mbd, Nullable …...
2015年亚太杯APMCM数学建模大赛C题识别网络中的错误连接求解全过程文档及程序
2015年亚太杯APMCM数学建模大赛 C题 识别网络中的错误连接 原题再现 网络是描述真实系统结构的强大工具——社交网络描述人与人之间的关系,万维网描述网页之间的超链接关系。随着现代技术的发展,我们积累了越来越多的网络数据,但这些数据部…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...








