Pytorch实现CNN实验

一、实验要求

用 python 的 Pytorch模块实现卷积神经网络。网络结构为一个输入层、两个卷积层、一个全连接层、一个输出层。

二、实验目的

  1. 实现一个包含卷积层、池化层和全连接层的卷积神经网
  2. 了解如何在训练数据集上使用反向传播算法和Adam优化算法训练神经网络。
  3. 加深对卷积神经网络的了解

三、实验过程

1.搭建卷积神经网络

1)导入库

导入了PyTorch和相关库,包括神经网络模块 (nn) 和用于图像处理的torchvision模块,以及用于显示进度条的tqdm库

2)定义超参数和设备

定义了批量大小、训练周期数、学习率和保留概率,并检查是否有可用的CUDA设备。

3)数据预处理和加载

定义了数据预处理的转换(将图像转为张量并进行标准化),并加载了MNIST数据集,并创建了训练和测试数据加载器

4)定义卷积神经网络模型

使用nn.Sequential定义了一个简单的卷积神经网络模型。模型包含两个卷积层、池化层、全连接层以及一些激活函数和dropout层。

5)定义损失函数和优化器

使用交叉熵损失和Adam优化器

6)训练和测试循环

2.对模型进行优化、改进

1)运行程序,发现只有每轮训练的测试集结果输出,并没有整个训练测试集结果输出

增加相关代码,输出整体Loss和Acc

2)调整网络模型

去掉一层卷积和一层池化

增加一层卷积和一层池化

调整卷积核大小为3*3

3)调整学习率

调整学习率为1e-5

调整学习率为1e-3

4)调整epochs

调整epochs为15

调整epochs为20

四、实验结果

|-------------|------------|----------------|
| | Train Loss | Train Accuracy |
| 原始 | 1.4719 | 0.9906 |
| 一层卷积层一层池化 | 1.4765 | 0.9869 |
| 三层卷积层三层池化 | 1.4736 | 0.9888 |
| 卷积核为3*3 | 1.4765 | 0.9869 |
| 调整学习率为1e-5 | 1.5152 | 0.9543 |
| 调整学习率为1e-3 | 1.4797 | 0.9814 |
| 调整epochs为15 | 1.4685 | 0.9935 |
| 调整epochs为20 | 1.4665 | 0.9953 |

经过多次调参,优化模型,发现两层卷积层,两层池化层,卷积核大小为2*2,学习率为1e-4,epochs为20时,得出的准确率最高。

五、实验总结

在这个实验中,我使用了PyTorch搭建了一个简单的卷积神经网络(CNN)来进行手写数字(MNIST数据集)的分类任务。首先定义了网络模型,包含了卷积层、池化层和全连接层,通过使用ReLU激活函数和Dropout来增强模型的性能,并且使用了交叉熵损失函数和Adam优化器进行模型的训练,在每个epoch中使用训练集和测试集进行了模型的训练和评估。同时通过修改模型结构。卷积核的大小,学习率等操作进行优化模型,最终发现增大epoch可以使准确率增大,最终可达0.9953.

实验中也遇到了一些问题,比如在测试集输出中没有总的Loss和Accuracy,通过对代码的调整,成功地添加了这些信息,提高了实验的完整性,更好对比实验结果。并且,刚开始更改模型结构遇到很多困难,有时候因为一个小细节没有注意到,导致修改出错。

相关推荐
思绪无限9 小时前
YOLOv5至YOLOv12升级:植物叶片病害识别系统的设计与实现(完整代码+界面+数据集项目)
深度学习·yolo·目标检测·yolov12·yolo全家桶·植物叶片病害检测
白羊by9 小时前
YOLOv1~v11 全版本核心演进总览
深度学习·算法·yolo
lanker就是懒蛋9 小时前
深度学习Q&A:手写反向传播与OOM排查的深层逻辑
人工智能·深度学习
STLearner10 小时前
WSDM 2026 | 时间序列(Time Series)论文总结【预测,表示学习,因果】
大数据·论文阅读·人工智能·深度学习·学习·机器学习·数据挖掘
STLearner10 小时前
WSDM 2026 | 时空数据(Spatial Temporal)论文总结
人工智能·python·深度学习·机器学习·数据挖掘·智慧城市·推荐算法
空中湖10 小时前
大模型修炼秘籍 第十二章:人师指路——RLHF之精髓
人工智能·深度学习·transformer
Westward-sun.10 小时前
PyTorch迁移学习实战:用ResNet18实现20类食物图像分类(附代码详解)
pytorch·分类·迁移学习
QQ6765800813 小时前
智慧工厂之扬尘识别 铲车装载识别 工程重型机械识别 磁铁识别 深度学习YOLO格式图像识别第10435期
人工智能·深度学习·yolo·扬尘识别·铲车装载·工程重型机械·磁铁识别
思绪无限14 小时前
YOLOv5至YOLOv12升级:行人跌倒检测系统的设计与实现(完整代码+界面+数据集项目)
深度学习·yolo·目标检测·yolov12·yolo全家桶·行人跌倒检测系统
AI医影跨模态组学14 小时前
PLOS Medicine 中山大学肿瘤防治中心蔡木炎等团队:基于多视角深度学习的组织病理学分析用于II期结直肠癌的预后与治疗分层
人工智能·深度学习·论文·医学·医学影像