前言
学完动量和批量的概念,这次继续学自适应学习率,分类,卷积神经网络,继续探究深度学习的奥秘。
一、自适应学习率
引入自适应学习率是因为原始的梯度下降在误差表面效果很差,需要更好的梯度下降的版本,而且在梯度下降里,所有的参数都设有相同的学习率,所以为了解决问题,应该给每一个参数定制变化率,如果在某一个方向上,梯度值很小,那么学习率应该调大一点,如果在某一个方向上坡度很大,学习率要小一点。
二、分类
分类可以当做回归来看,输入x后,输出仍然是一个标量,要跟正确答案的那个类月接近越好,,下面一个例子来表示类的问题:
三、卷积神经网络
虽然是实践内容,但实践起来很容易,按照教程来大概20分钟左右就可以运行成功,预测处理结果,代码详解如下:
1.导入库和工具包
涵盖了数据处理、神经网络构建、数据集操作、图像转换和显示进度条等功能,为后续的模型训练和评估做好准备。
2.数据集准备和预处理
包括从指定路径加载图像数据,并对其进行预处理。作业中对图像的预处理操作包括调整大小和将图像转换为Tensor格式。为了增强模型的鲁棒性,可以对训练集进行数据增强。相关代码如下:
3.定义模型
定义了一个图像分类器类(Classifier
),继承自PyTorch的nn.Module
。该分类器通过一系列卷积层、批归一化层、激活函数和池化层构建卷积神经网络(CNN),用于提取图像特征。随后,这些特征被输入到全连接层进行分类,最终输出11个类别的概率,用于图像分类任务。
4.定义损失函数和优化器
实现了图像分类模型的初始化和训练配置,目的是准备好训练环境和参数。它选择合适的设备(GPU或CPU),设置模型、批量大小、训练轮数、提前停止策略,定义了损失函数和优化器,为后续的模型训练奠定了基础。
5.训练模型
实现了一个图像分类模型的训练和验证循环,目的是通过多轮训练(epochs)逐步优化模型的参数,以提高其在验证集上的性能,并保存效果最好的模型。训练阶段通过前向传播、计算损失、反向传播和参数更新来优化模型,验证阶段评估模型在未见过的数据上的表现。如果验证集的准确率超过了之前的最好成绩,保存当前模型,并在连续多轮验证性能未提升时提前停止训练。
6.评估模型
训练完成后,需要在测试集上评估模型的性能。通过计算准确率来衡量模型在测试集上的表现。
7.进行预测
构建一个测试数据集和数据加载器,以便高效地读取数据。实例化并加载预训练的分类器模型,并将其设置为评估模式。在不计算梯度的情况下,遍历测试数据,使用模型进行预测,并将预测标签存储在列表中。将预测结果与测试集的ID生成一个DataFrame,并将其保存为submission.csv
文件。