2024年夏季《深度学习》学习报告_Week_2

2024年夏季《深度学习》学习报告

姓名和学号?xxx
本实验属于哪门课程?XXXX大学24夏《深度学习》
学习内容?卷积神经网络
博客地址?XXXXXXX

一、学习目标

1、CNN的基本结构:卷积、池化、全连接;

2、典型的⽹络结构:AlexNet、VGG、GoogleNet、ResNe。

二、学习内容

【第⼀部分:代码练习】在⾕歌 Colab 上完成上⾯的代码练习,关键步骤截图,并附⼀些⾃⼰的

想法和解读。

  • MNIST 数据集分类:构建简单的CNN对 mnist 数据集进⾏分类。同时,还会在实验中学习池化与卷积操作的基本作⽤, 实验指导链接
  • CIFAR10 数据集分类:使⽤ CNN 对 CIFAR10 数据集进⾏分类, 实验指导链接
  • 使⽤ VGG16 对 CIFAR10 分类,实验指导链接

【第⼆部分:问题总结】思考下⾯的问题:

  • dataloader ⾥⾯ shuffle 取不同值有什么区别?
  • transform ⾥,取了不同值,这个有什么区别?
  • epoch 和 batch 的区别?
  • 1x1的卷积和 FC 有什么区别?主要起什么作⽤?
  • residual leanring 为什么能够提升准确率?
  • 代码练习⼆⾥,⽹络和1989年 Lecun 提出的 LeNet 有什么区别?
  • 代码练习⼆⾥,卷积以后feature map 尺⼨会变⼩,如何应⽤ Residual Learning?
  • 有什么⽅法可以进⼀步提升准确率?

三、程序运行结果

代码练习1:https://colab.research.google.com/drive/1lIfOm2m-mU2rDKyTwBE7L-_bGqRoCNwS?usp=sharing

在这里插入图片描述

代码练习2:https://colab.research.google.com/drive/1eAuC1iE-A3ohMvHKtvXsjLzyt7WUJzXV?usp=sharing

在这里插入图片描述

代码练习3:https://colab.research.google.com/drive/1xkiLqU6vgiCSh4H5aTxzx-ZCCOcIrGtr?usp=sharing

在这里插入图片描述

四、问题总结与体会

问题1:

在这里插入图片描述

  • 解决方案:pytorch 版本问题

    images, labels = iter(trainloader).next()
    

    改为

    images, labels = next(iter(trainloader))
    

问题:

  • dataloader ⾥⾯ shuffle 取不同值有什么区别?

    DataLoader 中shuffle 参数用于控制数据加载顺序。它有三种不同的取值,分别是 True、False 和一个整数值。

    • 当 shuffle=True 时,数据会在每个 epoch(训练集全部数据的一次遍历)开始之前被随机打乱。这样可以确保每个 epoch 中的样本顺序都是不同的,有助于模型学习到更好的特征,避免模型对于固定顺序的数据过度拟合。
    • 当 shuffle=False 时,数据将按照原始顺序加载,不会进行打乱。这在某些情况下可能是有用的,例如需要对模型进行调试或评估时,可以确保每个样本按照一定的顺序加载,以便进行比较或分析。
    • 当 shuffle 为一个整数值时,数据将按照该整数值作为随机种子进行打乱。这意味着在每个 epoch 开始时,数据将按照相同的顺序进行打乱,因此每个 epoch 中的数据加载顺序都是一致的。这在需要重复实验或比较不同模型的结果时是有用的,确保每个模型在相同的数据顺序下进行训练。
  • transform ⾥,取了不同值,这个有什么区别?

    • ToTensor():将数据转换为 PyTorch 的 Tensor 格式。
    • Normalize(mean, std):对数据进行标准化处理,减去均值并除以标准差。
    • RandomCrop(size):随机裁剪图像为指定大小。
    • RandomHorizontalFlip():随机水平翻转图像。

    对于transform=transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])适用于灰度图像数据,因为它只有一个通道。
    对于transform=transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) 适用于多通道图像数据,如 RGB 图像。

  • epoch 和 batch 的区别?

    Epoch 表示完整地遍历整个训练数据集的次数。Batch 表示一次迭代中所使用的样本数量。

  • 1x1的卷积和 FC 有什么区别?主要起什么作⽤?

    1x1卷积主要用于特征图的通道变换和信息融合,能够减少参数和计算量;全连接层用于实现特征到类别的映射和学习特征之间的关系,增加模型的非线性能力。
    1x1卷积的主要作用有:降低特征图的通道维度;引入非线性变换;融合多个特征图信息。
    FC的主要作用有:实现特征到类别的映射;学习特征之间的关系;增加模型的非线性能力。

  • residual leanring 为什么能够提升准确率?

    在传统的深层神经网络中,随着层数的增加,梯度可能会逐渐减小并消失。这导致训练过程中难以有效地更新较早层的参数,限制了模型的深度。通过残差连接,使得梯度可以直接传播到早期层,减轻了梯度消失问题,更容易训练深层网络。
    引入残差连接允许网络学习到恒等映射,即输入直接通过残差连接传递到输出。这使得网络可以选择性地学习输入的变换,而不是强制性地对输入进行变换。更深的网络能够提供更强大的表达能力,从而有助于捕捉复杂的数据分布和提高模型的准确率。

  • 代码练习⼆⾥,⽹络和1989年 Lecun 提出的 LeNet 有什么区别?

    练习二中网络激活函数为ReLU函数,LeNet的激活函数为Sigmoid函数;练习二中网络的优化算法为Adam,LeNet的优化算法为梯度下降算法。

  • 代码练习⼆⾥,卷积以后feature map 尺⼨会变⼩,如何应⽤ Residual Learning?

    在给定的代码中,由于卷积操作导致特征图尺寸缩小,可以在每个卷积操作后使用1x1的卷积来调整特征图的通道数,并应用残差连接。

  • 有什么⽅法可以进⼀步提升准确率?

    可以调整更加合适的超参数;在训练过程中进行数据增强操作;使用正则化技术,如L1或L2正则化、Dropout等,可以减少过拟合现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布六Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值