深度学习(三)
1. 回顾
- 数据准备:介绍了数据集的来源(开源、爬取),明确数据预处理的重要性。对于开源数据集,可根据自身项目需求进行增删改等调整。
- 模型构建与训练:
- 回顾了项目标准流程:定义网络结构、进行训练并评估模型。
- 强调了以准确率、精确率等综合指标为核心,而非单一的置信度来评估模型表现。
- 模型优化策略
- 简化模型:通过使用全局平均池化层来替代全连接层,显著减少了模型参数量。
- 集成方法:作为未来模型优化的方向之一进行了介绍。
格式转换:统一图像尺寸、通道顺序,使用
transforms.ToTensor()
转为张量。归一化:用数据集全局均值与标准差做标准化(如
transforms.Normalize(mean, std)
),加速收敛并稳定训练。数据增强(可选):旋转、裁剪、翻转、颜色抖动等,提升模型泛化能力。
2. 关键技术概念解析
- 可解释性:应具备足够的技术细节和充分的理由来支撑每个决策,避免“黑箱”操作。
- 深度学习框架:类比于数学库(Numpy),是提供大量封装功能供开发者调用的平台。主流框架主要有PyTorch和TensorFlow。
- 数据预处理:讲解了使用transforms进行数据转换(如转换为tensor格式)和归一化(如使用均值与标准差进行标准化)的操作及其必要性。
- 数据集类/迭代器:介绍了如何利用train/test datasets和DataLoader生成器来加载和高效遍历数据集。
3. 模型架构与训练流程讲解
- 模型定义: 讲解了神经网络的基本结构,包含全连接层、批量归一化和ReLU激活函数等组件,并引入softmax作为输出层。
- 超参数配置: 讨论了在训练前需明确的超参数,主要包括学习率、优化方法以及指定使用的硬件设备(GPU/CPu)。
- 损失与优化器: 解释了通过损失函数(Loss Function)量化模型输出与真实值的差距,并使用SGD优化器配合动态调整策略来驱动模型参数进行梯度下降。
- 动态调整学习率: 重点说明了为何需要动态调整学习率。开始时使用一个相对较高的初始学习率以确保收敛,然后在训练周期中逐渐降低它,以达到一个稳定、低损失的状态,从而避免收敛速度过慢和超过最优解的问题。
超参数 | 典型值 / 选择依据 |
---|---|
学习率 | 1e-2 起步,配合动态调度 |
优化器 | SGD + Momentum 0.9 / AdamW |
Batch Size | 32/64/128,视 GPU 显存与梯度噪声权衡 |
Epochs | 提前停止机制,监控验证集 ACC |
硬件 | 默认 GPU(device = cuda:0 ) |
4. 训练与评估核心逻辑
- 训练过程: 详细拆解了for循环中的单次训练步骤,包含了特征与标签送入GPU、前向传播、通过loss函数计算损失、反向传播、梯度更新及后续的准确率(ACC)计算。
- 准确率(ACC)计算方法: 明确了在分类任务中,通过选取输出类别置信度最高的类别作为最终预测结果,并将该预测结果与真实标签进行比较,统计正确匹配的数量从而计算出精确率(ACC)。
- 测试过程: 介绍了如何在验证集或测试集上调用模型进行预测,转换为评估模式(评估模式),并利用相似逻辑计算预测准确率(ACC)以全面评估模型性能。
- 可视化图表要求: 强调在毕业设计或论文中必须包含模型训练过程的图表,如将不同模型的损失函数(Loss)随训练轮次下降的趋势以不同颜色线条绘制在同一张图上,便于直观对比和分析各模型的表现。
5.总结
先拿Roboflow自动去重、剪裁、仿射增强,30秒导出标准化COCO;再用轻量EfficientNet-B0+AdamW,OneCycleLR一路飙到0.95 F1;最后TensorBoard导出Loss/ACC双曲线和混淆矩阵