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
技术交流
大家点赞、收藏、关注、评论啦!
精彩专栏推荐订阅:在下方专栏👇🏻👇🏻👇🏻👇🏻
《精品项目实战》
更多技术干货,请持续关注程序员大佬超。
原创不易,转载请务必注明出处。