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

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

目录

      • 1、效果图
      • 2、模型训练核心源码逻辑
        • (1)环境与配置初始化‌
        • (2)数据准备‌
        • (3)模型构建‌
        • (4)训练配置‌
        • (5)训练循环‌
        • (6)动态策略‌
        • (7)训练监控‌
        • (8)实现细节‌
      • 3、源码下载
      • 技术交流

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


1、效果图

模型训练显示每批次的损失和准确率
在这里插入图片描述

识别:
在这里插入图片描述
在这里插入图片描述

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

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


2、模型训练核心源码逻辑

(1)环境与配置初始化‌

‌设备检测‌:自动选择GPU/CPU训练环境

‌超参数集中管理‌:

config = {'data_path': './train/',     # 数据集路径'num_classes': 5,            # 分类类别数'batch_size': 32,            # 批处理大小'num_workers': 4,            # 多进程数据加载'learning_rate': 0.001,      # 初始学习率'num_epochs': 50,            # 训练轮次'save_path': 'best.pth'      # 模型保存路径
}
(2)数据准备‌

‌数据集加载‌: 使用自定义的FlowerDataset类加载数据 ,标签默认处理为‌one-hot编码格式‌

数据流水线构建‌:

DataLoader(train_dataset,batch_size=config['batch_size'],shuffle=True,                # 训练数据打乱num_workers=config['num_workers'],  # 多进程加速pin_memory=True,             # 快速数据转移到GPUdrop_last=True               # 丢弃最后不完整的批次
)
(3)模型构建‌

‌预训练模型适配‌: 加载ResNet18预训练模型
修改最后一层全连接层以适配分类任务:

model.fc = nn.Linear(model.fc.in_features, config['num_classes'])
(4)训练配置‌
  • 损失函数‌:CrossEntropyLoss(自动处理Softmax)
  • 优化器‌:Adam优化器,初始学习率0.001
  • 学习率调度‌:ReduceLROnPlateau动态调整策略(基于准确率,耐心值3轮)
(5)训练循环‌
  • 模式设置‌:model.train()
  • ‌数据迭代‌:
    使用tqdm进度条可视化训练过程
    数据高效转移至设备:non_blocking=True
  • ‌前向传播与损失计算‌:
    将‌one-hot标签‌转换为类别索引:torch.argmax(labels, dim=1)
    计算损失:loss = criterion(outputs, labels_class)
  • ‌反向传播优化‌:
    梯度清零优化:optimizer.zero_grad(set_to_none=True)
    反向传播:loss.backward()
    参数更新:optimizer.step()
  • ‌指标统计‌:
    累计损失:running_loss
    计算准确率:correct / total
(6)动态策略‌

‌学习率调整‌:根据当前epoch的准确率自动降低学习率
‌模型保存‌:仅保存最佳准确率对应的模型权重(.pth文件)

if epoch_acc > best_acc:best_acc = epoch_acctorch.save(model.state_dict(), config['save_path'])
(7)训练监控‌

‌实时进度‌:tqdm显示每批次的损失和准确率
Epoch摘要‌:

print(f'Epoch [{epoch+1}/{config["num_epochs"]}]')
print(f'Loss: {epoch_loss:.4f} Acc: {epoch_acc:.4f}')
print(f'Current LR: {optimizer.param_groups[0]["lr"]:.6f}')
(8)实现细节‌
  • 数据效率优化‌:
    num_workers=4加速数据加载
    pin_memory=True提升GPU数据传输速度
  • 标签处理适配‌:
    兼容one-hot标签向类别索引的转换
  • 资源利用‌:
    non_blocking=True异步数据转移
    set_to_none=True高效梯度清零

3、源码下载

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

在这里插入图片描述


技术交流

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


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

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

相关文章:

  • 使用 Selenium 截图功能,截不到原生 JavaScript 弹窗
  • 【视觉基础模型-SAM系列-2】SAM2: Segment Anything in Images and Videos
  • 【上位机——MFC】对象和控件绑定
  • kettle从入门到精通 第九十六课 ETL之kettle Elasticsearch 增删改查彻底掌握
  • C++GO语言socket套接字
  • Go语言——for循环、包构建以及包冲突
  • 怎样避免住宅IP被平台识别
  • Prompt Engineering 提示词工程学习
  • 【iscsi】服务器重启找不到iscsi的磁盘,导致磁盘挂载失败
  • uniapp 震动功能实现
  • 约瑟夫josephu问题
  • 企业数字化转型第二课:接受不完美(1/2)
  • MCP相关标的梳理
  • ​​大疆无人机“指点飞行模式”​​(TapFly)
  • 居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)
  • RT Thread Studio创建软件和硬件RTC工程
  • WebGIS开发面试题:前端篇(三)
  • 深入理解Java反射机制
  • 基于Node.js的Web爬虫: 使用Axios和Cheerio抓取网页数据
  • 强化学习之蒙特卡洛树搜索和噪声网络
  • 精益数据分析(45/126):媒体网站商业模式的深度剖析与挑战应对
  • 【Python】字符串 转为 JSON 格式的注意事项
  • ASP.NET MVC4 技术单选及多选题目汇编
  • 策略优化基础网格搜索与参数优化
  • 交替序列长度的最大值
  • Feign 重试策略调整:优化微服务通信的稳定性
  • pod声明周期
  • 行业先锋:六款产品的实战表现
  • PageRank和TextRank
  • 源码分析之Leaflet中的LayerGroup