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

博主介绍:
计算机科班人,全栈工程师,掌握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,             # 快速数据转移到GPU
    drop_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_acc
    torch.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

在这里插入图片描述


技术交流

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大佬超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值