一、实验要求
1. 二维卷积实验(平台课与专业课要求相同)
⚫ 手写二维卷积的实现,并在至少一个数据集上进行实验,从训练时间、预测精 度、Loss变化等角度分析实验结果(最好使用图表展示)
⚫ 使用torch.nn实现二维卷积,并在至少一个数据集上进行实验,从训练时间、 预测精度、Loss变化等角度分析实验结果(最好使用图表展示)
⚫ 不同超参数的对比分析(包括卷积层数、卷积核大小、batchsize、lr等)选其 中至少1-2个进行分析
⚫ 使用PyTorch实现经典模型AlexNet并在至少一个数据集进行试验分析 (平台 课同学选做,专业课同学必做)(无GPU环境则至少实现模型)
⚫ 使用实验2中的前馈神经网络模型来进行实验,并将实验结果与卷积模型结果 进行对比分析(选作)
2. 空洞卷积实验(专业课)
⚫ 使用torch.nn实现空洞卷积,要求dilation满足HDC条件(如1,2,5)且要 堆叠多层并在至少一个数据集上进行实验,从训练时间、预测精度、Loss 变化等角度分析实验结果(最好使用图表展示)
⚫ 将空洞卷积模型的实验结果与卷积模型的结果进行分析比对,训练时间、 预测精度、Loss变化等角度分析
⚫ 不同超参数的对比分析(包括卷积层数、卷积核大小、不同dilation的选择, batchsize、lr等)选其中至少1-2个进行分析(选做)
3. 残差网络实验(专业课)
⚫ 实现给定结构的残差网络,在 至少一个数据集上进行实验, 从训练时间、预测精度、Loss 变化等角度分析实验结果(最 好使用图表展示)
⚫ 将残差网络与空洞卷积相结合, 在至少一个数据集上进行实验, 从训练时间、预测精度、Loss 变化等角度分析实验结果(最 好使用图表展示) (选做)
二、源代码
见资源“北京交通大学《深度学习》专业课,实验3卷积神经网络、空洞卷积、残差神经网络实验”
三、实验问题
问题一: 变形函数无法使用
教学视频中对图片进行变形时使用的代码——Image.ANTIALIAS报错
解决办法:更换新代码 ——Image.Resampling.LANCZOS
问题二: 记录测试时间时函数无法使用
解决办法:在python3.8中,time模块下不支持clock,更换新代码——time.perf_counter()
问题三: 显存爆炸
在不断调整参数时,突然出现报错:
RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 4.00 GiB total capacity; 2.44 GiB already allocated; 0 bytes free; 2.45 GiB reserved in total by PyTorch)
解决办法:在执行代码前输入释放显存:
if hasattr(torch.cuda, 'empty_cache'):
torch.cuda.empty_cache()
补充: 此方法不一定生效!
大概率是因为实验机器性能问题,也就是显卡不够用了。。。
此时更有效的办法是降低参数量,或者简单粗暴的换更好的显卡。
问题四: 设置卷积核参数
训练输入的样本和分类对象是已定的。
训练的深度(隐藏层的层数)和卷积核 (神经元)的数量、大小都是训练前根据经验设定的。
如果训练参数设置不合理会导致过拟合或者欠拟合!!
卷积网络也可以通过误差反向传播算法来进行参数学习,参数为卷积核中权重以及偏置
即在训练过程中,网络会自动调整卷积核的参数,使得输出特征最优化。
同时,卷积神经网络也可以使用预训练模型来初始化卷积核的参数,以加速网络的训练过程。预训练模型可以使用已经在大规模数据上训练好的模型参数,这些参数已经学习到了一些通用的特征,可以在新的任务中进行微调,以提高网络的性能。