当前位置: 首页 > news >正文

Python案例实战《水果识别模型训练及调用》

目录

      • 1、效果图
      • 2、模型训练关键步骤
        • (1)导入必要的库
        • (2)数据预处理
        • (3)数据集加载与划分
        • (4)构建模型
        • (5)配置训练参数
        • (6)模型训练与验证
          • 训练过程:
          • 验证过程:
        • (7)模型保存
        • (8)输出结果
      • 3、源码下载
      • 技术交流

博主介绍:
计算机科班人,全栈工程师,掌握C、C#、Java、Python、Android等主流编程语言,同时也熟练掌握mysql、oracle、sqlserver等主流数据库,能够为大家提供全方位的技术支持和交流。
具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解答、代码讲解、文档报告等专业服务。
🍅文末获取源码🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到我哟
《精品项目实战》


1、效果图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


2、模型训练关键步骤

该程序实现了一个基于 PyTorch 的水果识别模型训练流程,包含了数据预处理、模型训练、验证、模型保存等关键步骤,并且提供了详细的结果输出以便监控训练进展。

(1)导入必要的库
  • PyTorchTorchVision:用于构建和训练模型,进行图像数据加载和预处理。
  • CustomNet:导入自定义的神经网络模型。
(2)数据预处理

使用 torchvision.transforms 对图像数据进行一系列增强和转换:

  • 随机垂直翻转:增加图像的多样性。
  • 随机灰度处理:模拟图像在不同光照下的效果。
  • 随机旋转:随机旋转图像,增加模型的旋转不变性。
  • 随机裁剪和缩放:裁剪并调整图像大小,模拟不同尺寸的物体。
  • 颜色增强:包括亮度、对比度、饱和度和色调的随机调整。
  • 转换为张量并标准化:将图像转换为张量并进行标准化,以适配预训练模型的输入要求。
(3)数据集加载与划分
  • 使用 ImageFolder 加载数据集,其中图像按照文件夹名称进行分类。
  • 根据 80% 训练集和 20% 验证集的比例划分数据集。
  • 使用 DataLoader 创建训练集和验证集的批处理加载器。
(4)构建模型
  • 实例化自定义的神经网络模型 CustomNet,该模型用于分类任务。
(5)配置训练参数
  • 设备选择:自动选择 GPU 或 CPU 进行训练。
  • 损失函数:使用交叉熵损失函数(CrossEntropyLoss)。
  • 优化器:使用随机梯度下降优化器(SGD),学习率为 0.01,动量为 0.9。
  • 训练周期:设置训练的总轮数为 15。
(6)模型训练与验证
训练过程:
  • 使用 train() 模式进行训练,遍历训练数据集中的每个批次。
  • 对每个批次进行前向传播、计算损失、反向传播并更新参数。
  • 记录每个批次的损失值,用于后续计算平均损失。
验证过程:
  • 使用 eval() 模式进行验证,遍历验证数据集。
  • 对每个批次进行前向传播并预测标签,计算准确率。
  • 记录每个批次的准确率,用于后续计算平均准确率。
(7)模型保存
  • 每个周期结束后,如果当前模型的准确率超过之前的最佳准确率,则保存当前的模型。
  • 保存的模型文件名为 fruit.pth
(8)输出结果
  • 在每个训练周期结束时,输出当前周期的损失和准确率。
  • 如果模型表现更好,则更新最佳准确率并保存模型。

3、源码下载

https://download.csdn.net/download/xch_yang/90778343

在这里插入图片描述


技术交流

大家点赞、收藏、关注、评论啦!
精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻
《精品项目实战》


更多技术干货,请持续关注程序员大佬超。
原创不易,转载请务必注明出处。

http://www.xdnf.cn/news/327313.html

相关文章:

  • Linux 内核学习(7) --- 字符设备驱动
  • eFish-SBC-RK3576工控板CAN接口测试操作指南
  • leetcode 3341. 到达最后一个房间的最少时间 I 中等
  • Unity_JK框架【3】 事件系统的简单使用示例
  • 169.多数元素
  • openstack虚拟机状态异常处理
  • java集合菜鸟教程
  • 从 CodeBuddy Craft 到 edgeone-pages-mcp 上线算命网站的一次完整体验分享
  • 多语言网站的 UX 陷阱与国际化实践陷阱清单
  • 前端面试每日三题 - Day 27
  • 【Python】os模块
  • 使用 Gradio + Qwen3 + vLLM 部署 Text2SQL 多表查询系统
  • 【Prometheus】深入解析 Prometheus 特殊标签 `__param_<name>`:动态抓取参数的艺术
  • Android 数据持久化之数据库存储 Room 框架
  • 50个精选DeepSeek指令
  • ifconfig statistics
  • springboot使用阿里云OSS实现文件上传
  • 云上玩转Qwen3系列之二:PAI-LangStudio搭建联网搜索和RAG增强问答应用
  • C++初阶 —— 类和对象
  • C++ 中的 `it->second` 和 `it.second`:迭代器与对象访问的微妙区别
  • 如何延长电脑使用寿命?
  • Cadence 高速系统设计流程及工具使用二
  • 学习黑客 Linux用户管理
  • Linux理解文件fd
  • 热部署相关
  • 说说es配置项的动态静态之分和集群配置更新API
  • Filecoin矿工资金管理指南:使用lotus-shed actor withdraw工具
  • Kubernetes学习笔记
  • 浅谈图像分割中预测图与标签图的对应关系
  • C++面向对象设计类的核心知识详解总述(1)