第三次作业:卷积神经网络基础

目录

Part1:视频学习+思考问题

Part2:代码练习 

一、MNIST 数据集分类

卷积神经网络(CNN)

1. 加载数据 (MNIST)

2. 创建网络

3. 在小型全连接网络上训练(Fully-connected network) 

4. 在卷积神经网络上训练 

5. 打乱像素顺序再次在两个网络上训练与测试

二、CIFAR10 数据集分类

三、使用 VGG16 对 CIFAR10 分类

1. 定义 dataloader

2. VGG 网络定义

3. 网络训练

4. 测试验证准确率:


本博客为OUC2022秋季软件工程第三次作业——卷积神经网络基础。

Part1:视频学习+思考问题

朱甲文

1、dataloader 里面 shuffle 取不同值有什么区别?

答:shuffle是bool类型参数,默认数值是False,作用是设置是否将数据集打乱,类似于“洗牌”的效果。设置为True可以在每次迭代训练时将数据集打乱,使数据具有独立性。
2、transform 里,取了不同值,这个有什么区别?

答:transforms模块主要用于对图像进行转换等一系列预处理操作,其主要目的是对图像数据进行增强,进而提高模型的泛化能力。对图像预处理操作有数据中心化,缩放,裁剪等。经过查询,transforms模块有以下常用函数:

①裁剪
transforms.CenterCrop 中心裁剪
transforms.RandomCrop 随机裁剪
②翻转
transforms.RandomHorizontalFlip(p) 依概率p水平翻转
transforms.RandomVerticalFlip(p) 依概率p垂直翻转
③旋转
transforms.RandomRotation 随机旋转
④图像变换
transforms.Resize调整尺寸
transforms.Normalize标准化
transforms.ToTensor转为tensor
transforms.Pad 填充
3、epoch 和 batch 的区别?

答:epoch指的是训练的次数,1个epoch就是指所有的训练集数据走完一遍网络,而batch就是将1轮epoch的数据量进行分割。例如,batch_size = 4就是指将数据量分成4份分别传入模型进行训练。
4、1x1的卷积和 FC 有什么区别?主要起什么作用?

答:卷积跟全连接都是点乘操作,区别在于卷积是作用在一个局部的区域,而全连接是对于整个输入而言。如果我们卷积作用的扩大,就是全连接层

1×1卷积的作用:1*1的卷积可以用于降维(减少通道数),升维(增加通道数),也就是调节通道数,代替FC成为一个分类器;可以增加非线性特性;可以减少参数。

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

答:残差学习可以加深模型的深度而不引起准确度的饱和,有效解决了梯度消失的问题,因此能够提高准确度。
6、代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?

答:代码练习二中的网络是CNN网络。首先,两种网络的激活函数不同,CNN网络使用了ReLU激活函数,而LeNet使用的是Sigmoid激活函数;其次,CNN的网络结构相比LeNet少了一层池化层;最后,LeNet网络中使用了Softmax分类器,在代码练习二的CNN网络中则没有使用。
7、代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?

答:可以使用1*1的卷积或者使用填充padding的方法来调整feature map的尺寸。
8、有什么方法可以进一步提升准确率?

答:(1)选用合适的激活函数,尝试多种激活函数;

       (2)加深网络的深度;

       (3)优化网络的结构。

赵志豪

1、dataloader 里面 shuffle 取不同值有什么区别?

答:shuuffle的值有True和False两种,表示是否每次输入的数据,True表示打乱,False表示不打乱。
2、transform 里,取了不同值,这个有什么区别?

答:transform表示对图像进行预处理,不同的值代表不同的操作,如

transforms.CenterCrop表示中心裁剪操作;

transforms.RandomCrop表示随机裁剪操作;

transforms.Resize表示调整尺寸操作;

transforms.Normalize表示标准化操作等。
3、epoch 和 batch 的区别?

答:epoch表示训练的次数,batch指每一次训练一个epoch分割的每份。
4、1x1的卷积和 FC 有什么区别?主要起什么作用?

答:1×1卷积和FC输出大小相同,但是FC在一开始根据图像大小设定好不能再变,而1x1卷积可以任意改变;1x1卷积层采用参数共享方式,需要的参数量会比FC层所使用的参数量少,计算速度更快;1x1卷积可以用于降维和升维,代替FC成为一个分类器。
5、residual leanring 为什么能够提升准确率?

答:它通过残差网络结构,使用恒等映射直接将前一层输出传到后面,增加了网络深度;还解决了梯度消失的问题。
6、代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?

答:模型构造不同。以AlexNet为例,AlexNet网络包含8层,其中包括5层卷积和2层全连接隐藏层,以及1个全连接输出层。

激活函数不同。传统的LeNet网络使用的是sigmoid激活函数,而AlexNet使用的是ReLU函数。ReLU函数比sigmoid函数计算上更为简单,且ReLU函数在不同的参数初始化方法下可以让模型更容易训练。

7、代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?

答:使用1x1卷积改变尺寸。
8、有什么方法可以进一步提升准确率?

答:使用更为精准的数据集进行训练;

选择性能更优的神经网络结构;

修改训练方法等。

钟杰聪

1、dataloader 里面 shuffle 取不同值有什么区别?

答:shuffer=False表示不打乱数据的顺序,用于训练。shuffer=Ture表示在每一次epoch中都打乱所有数据的顺序,用于测试。 
2、transform 里,取了不同值,这个有什么区别?

答:不同的值代表不同种对图像数据进行变换的函数。
3、epoch 和 batch 的区别?

答:epoch是训练次数,batch是指一次训练中输入的一批数据。
4、1x1的卷积和 FC 有什么区别?主要起什么作用?

答:虽然实现方法十分相似,但1*1卷积是相对局部而言的,FC即全连接是相对与整个输入而言的。前者可以实现channel的变换,提升网络的非线性;后者可以对输入的数据进行线性变换,还可以完成最后的分类任务。
5、residual leanring 为什么能够提升准确率?

答:因为避免了网络深度过深时的退化问题。
6、代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?

答:在两个卷积层和最后一个全连接层后分别加入了ReLU激活函数,但没有最后的softmax。
7、代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?

答:填充padding或者使用1*1的卷积来调整feature map的尺寸使其大小合适。
8、有什么方法可以进一步提升准确率?

答:加深网络深度,调整网络结构。

李浩

1、dataloader 里面 shuffle 取不同值有什么区别?

答:shuffle是bool类型的参数,当shuffle为True时,加载数据集数据时会将数据打乱,shuffle为False时不打乱,打乱顺序会使得每轮训练中的数据序列都不一样,消除了数据排列对训练效果的影响。
2、transform 里,取了不同值,这个有什么区别?

答:Normalize()函数的作用是将数据转换为标准高斯分布,即逐个channel的对图像进行标准化(均值变为0,标准差为1),可以加快模型的收敛。实验中Normalize((0.5,0.5,0.5),(0.5,0.5,0.5)),是对数据进行归一化, Normalize((0.4914, 0.4822, 0.4465),(0.2023, 0.1944, 0.2010))是从数据集中随机抽样计算得到的。
3、epoch 和 batch 的区别?

答:epoch是训练数据集的轮数,bantch是一个epoch内一次批量训练的样本数
4、1x1的卷积和 FC 有什么区别?主要起什么作用?

答:FC多用于卷积神经网络的输出,在整个卷积神经网络中起到“分类器”的作用。而1*1卷积可以减少或增加特征图的层数,可以用在多处进行增维降维。
5、residual leanring 为什么能够提升准确率?

答:在构造深度网络的时候,在增加层数事,由于梯度消失现象,网络的表达能力增强,可是训练精度却下降了,针对此现象,何恺明等人提出了ResNet又名残差神经网络指的是在传统卷积神经网络中加入残差学习(residual learning)

在此结构中,在此模型中,由于x直接连接到下一层,形成了Y=F(x)+x的结构,这样一来,解决了梯度消失现象,可以有效地提升准确率

6、代码练习二里,网络和1989年 Lecun 提出的 LeNet 有什么区别?

答:实验二中网络使用的是最大池,LeNet使用的是平均池;实验二中网络激活函数为ReLu函数,LeNet使用的是sigmoid函数(查找发现还有使用softmax函数实现的)。
7、代码练习二里,卷积以后feature map 尺寸会变小,如何应用 Residual Learning?

答:可以使用带大小为1*1的卷积来改变feature map尺寸使其可以应用Residual learning。
8、有什么方法可以进一步提升准确率?

答:扩大数据集

  算法改进

  优化网络结构等

赵吉林 

1、dataloader 里面 shuffle 取不同值有什么区别?

答:DataLoader中的shuffer=False表示不打乱数据的顺序,然后以batch为单位从头到尾按顺序取用数据。shuffer=Ture表示在每一次epoch中都打乱所有数据的顺序,然后以batch为单位从头到尾按顺序取用数据。

2、transform 里,取了不同值,这个有什么区别?

答:数据变换 Transforms

3、epoch 和 batch 的区别?

答:Epoch : 使用训练集的全部数据对模型进行了一次完整的训练,被称为一代训练
Batch : 使用训练集的一小部分样本对模型权重进行一次反向传播的参数更新,这一小部分样本被称为 一批数据

4、1x1的卷积和 FC 有什么区别?主要起什么作用?

答:1×1卷积核是对输入的每一个特征图进行线性组合,而全连接层是对输入的每一个数进行线性组合。1*1卷积主要是起到了降维、加入非线性、channal 的变换的作用
全连接层就是将最后一层卷积得到的特征图(矩阵)展

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

OUC_SE_GROUP19

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

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

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

打赏作者

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

抵扣说明:

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

余额充值