type
status
date
slug
summary
tags
category
icon
password
能力模型
能力分类
省赛
全球总决赛
学习进度
中国总决赛
一、实验目的:
基于华为自研MindSpore深度学习框架构建网络模型,实现图像识别(分类)相关任务。
二、实验内容:
将实验文档中的代码正确运行。
(1)使用notebook环境运行(P3——P8);
(2)使用pycharm pro远程调用华为云上的解释器来运行;(P9——P15)
(3)实验进阶操作(P16——P22)
1.修改训练集和测试集的划分比例,观察在不同比例下模型性能(测试性
能)的变化,并绘制折线图(可使用python画,也可以用excel作图)。
2.修改batch_size、weight_decay、lr、dropout_ratio,观察不同超参数对
于实验结果的影响(每次只修改一个超参数并保持其它参数不变)。
3.保持其它设置不变,尝试多种epoch_size,观察不同值对训练过程的影
响;是否有欠拟合、过拟合等现象发生。(提示:观察训练、测试性能。)
4.尝试在conv3和conv4之间添加一个conv和pooling层,观察实验结果的变化。(提示:需要在__init__和construct两个方法中添加代码)
要求:对运行结果、关键设置等能反映你自己工作的内容进行截图,配上必要的说明文字,放入实验报告。
三、实验环境:
- MindSpore2.1
- ModelArts平台
- PyCharm 2024.1.1(专业版)
四、实验详细实现过程
1.实验环境搭建
1.创建notebook环境
2.启动notebook
2.在notebook上进行花卉实验操作
3.报错警告问题的解决
1. 'RandomCropDecodeResize' 废弃警告;'HWC2CHW' 废弃警告
2.文件自动生成路径报错
4.使用pycharm pro远程调用华为云上的解释器来运行
1.配置SSH
- 获取开发环境预置虚拟环境路径
- 配置云上Python Interpreter
这里发现mindapore环境没有激活,所以出现问题,我退出重新激活后使用路径即可成功配置解释器。
解释器更新问题:
这个时候清除索引缓存或者重启IDE有效
5.实验进阶要求
1.修改训练集和测试集的划分比例,观察在不同比例下模型性能(测试性能)的变化,并绘制折线图。
2.修改batch_size、weight_decay、lr、dropout_ratio,观察不同超参数对实验结果的影响(每次只修改一个超参数并保持其它参数不变)。
为了便于训练比较,我将训练集训练次数改为100,并保留初始结果进行比对。
·将batch_size由32改为64:训练速度明显变慢,step变小一半,loss差异不大,acc变小,但sample的预测结果仍旧均正确
batch_size: 每次迭代时处理的数据样本数。较大的batch size可以加速训练过程,因为并行处理的效率更高,但也可能导致内存消耗大且可能收敛到较宽的局部最小值。较小的batch size会使训练过程更加随机,有助于探索更多解空间,但训练时间更长。
·将weight_decay由0.01改为0.05:step不变,loss变化不大,acc略有变小,但sample的预测结果仍旧均正确
weight_decay: L2正则化项的系数,用于防止模型过拟合。增加该值会加大对权重的惩罚,有助于简化模型,减少过拟合风险,但过度增加可能会导致欠拟合。
·将lr由0.0001改为0.001:step不变,loss变大,acc明显变小,且sample的预测结果出现一项错误,此时模型效率明显变低
lr (学习率): 决定模型参数更新的速度。较高的学习率可以使训练快速收敛,但也可能跳过最优解;较低的学习率有助于细致调整,但可能导致训练过程缓慢甚至陷入局部最小值。
据分析,较高的学习率导致模型跳过了部分最优解,造成模型准确率明显变低
·将dropout_ratio由0.5改为0.9:训练速度变慢,step不变,loss变化不大,acc略有降低,但sample的预测结果仍旧均正确
dropout_ratio: Dropout层的比例,用于防止过拟合。增加此比例会随机“丢弃”更多神经元输出,增强模型的泛化能力,但过高可能导致模型学习不足。
3.保持其它设置不变,尝试多种epoch_size,观察不同值对训练过程的影响;是否有欠拟合、过拟合等现象发生。(提示:观察训练、测试性能。)
· epoch_size = 100,训练速度较快,但是准确度下降,不过不至于到欠拟合
· epoch_size = 400,训练速度较高且准确率非常高
· epoch_size = 800,训练时间非常久,且大概从500起loss都一直非常低,准确率虽然变高,但明显为过拟合
欠拟合(Underfitting)
Loss:在训练集上,如果模型的损失函数值一直较高,即使经过多轮迭代也没有明显下降,这可能表明模型无法充分捕捉数据中的模式,即存在欠拟合。
Accuracy:对于分类任务,如果模型在训练集上的准确率较低,并且随训练几乎无明显提升,说明模型可能过于简单,不能很好地拟合数据,也是欠拟合的表现。
过拟合(Overfitting)
Loss:在训练初期,训练集和验证集的损失都会下降。但若训练集的损失继续显著下降,而验证集的损失开始上升(形成一个U形或高原状),这通常是过拟合的迹象。模型在训练数据上学习到了不必要的细节和噪声,导致其泛化能力减弱。
Accuracy:对于分类任务,如果模型在训练集上的准确率极高,接近或达到100%,但在验证集上的准确率远低于训练集,且可能还有下降趋势,这强烈暗示着模型出现了过拟合。
4.尝试在conv3和conv4之间添加一个conv和pooling层,观察实验结果的变化。(提示:需要在__init__和construct两个方法中添加代码)
·增加conv,通道必须为128,128才能进行,修改使用1x1的卷积核,经查询,这种设置虽然不改变特征图的空间尺寸,但可以用于调整通道间的信息,常用于特征维度的降维或升维(这里由于通道数不变,主要起特征重校准作用)
·增加一个平均池层pooling,进行平均池化降采样
·修改construct,将新修改的两层加入到模型中使其生效
根据要求,在conv3和conv4之间添加一个conv和pooling层,其中这两者之间我通过激活函数是用来给网络引入非线性,通过在每一层之后添加ReLU激活函数,网络能够学习更复杂的函数映射,从而更好地处理非线性问题,有助于提升模型的表达能力和训练效率。
·观测训练结果变化:发现报错,是特征图尺寸设置的问题
·修改特征图尺寸,将pooling尺寸修改为不变
- Author:Koreyoshi
- URL:https://Koreyoshi1216.com/article/ce7add1c-457b-4759-b6be-2455f80acc7f
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts