深度学习(四)
1. 卷积神经网络项目核心流程
- 数据加载与预处理:加载cifar-10数据集,并通过数据增强(如裁剪、翻转)和标准化等步骤进行预处理。
- 模型构建与训练:详细讲解了构建神经网络的方法,包含初始化函数和前向传播函数。通过定义损失函数和优化器(如SGD),并使用GPU加速,完成了模型的训练流程。
- 模型评估:重点介绍了准确率(ACC)作为全局评估标准的重要性,明确指出应避免仅凭单张图片的置信度来判断模型表现。
2. 模型优化策略
- 参数缩减:将全连接层替换为“全局平均池化”层,有效大幅减少了模型参数量,有利于缓解过拟合,并降低了对硬件配置的要求。
- 集成学习:采用了三个不同结构的模型(CN, gc, lg)进行训练和验证。通过投票机制(少数服从多数)整合多个模型的预测结果,得到了优于单个模型的最终结果。代码实现中,通过for循环对几个模型的梯度进行统一更新和损失求和。
- 引入经典模型:如何使用VGG网络架构来替代简单的卷积网络,以提升模型的性能和准确性。随后,一同展示了batch_size参数的主要作用是在不影响工作量的前提下,通过调节处理一批数据的大小来影响训练耗时。
3. 关于批量大小(batch_size)的影响
- batch_size主要影响数据的读取和计算方式,但不会改变最终训练的工作量。
- batch_size大的话,迭代次数会减少,但每次迭代的计算量大;batch_size小的话,迭代次数会增多,但每次计算量小。两者在相同数据集和总训练轮数下,完成的工作量是等价的。
- 批量大小过大可能导致超出计算设备的处理能力,反而影响准确率。因此,存在一个最佳的batch_size,能在保证准确率的同时优化训练效率。
4. VGG模型结构解析
- 通过简化的代码(如CFG配置文件)构建VGG网络的过程。
- 其中,“64”、“128”等数字代表卷积层的输出通道数,是决定网络深度的重要参数。“M”代表最大池化层。
- 通过遍历配置字典中的键值对,可以逐步构建出完整的卷积、池化和激活函数组成的网络结构。
5. 准确率(Accuracy)的计算
- 在测试阶段,模型会对图片进行前向传播,输出各分类的置信度。
- 计算准确率时,系统会找出预测结果中概率最高的类别,并将其与标签进行对比,以判断预测是否正确。
- 最终的准确率是预测正确的样本数量占总数的比例。
6. 模型优化与评估策略
- 由于当前代码仅包含一个网络模型,因此其准确率评估方法可用于复现,但对于单一模型或多种模型的对比,也具备参考价值。
- 提出了Yolo与ResNet结合的方案:Yolo负责目标物体的快速定位和框选,而ResNet负责后续的精确定位分类任务。这种方式将复杂问题拆分为定位和识别两个步骤。
- 指出当前项目存在的主要问题是模型对特定场景(如小角度)的猫狗行为分类准确率不足,疑似受数据集质量(如类别分布、标注难度)影响较大。
7.总结
项目系统覆盖了从数据预处理到模型优化的完整流程,通过参数缩减、集成学习和经典模型迁移平衡了效率与精度。未来需关注数据质量和任务特定架构设计(如YOLO-ResNet协同)以突破场景限制。