第2周学习:卷积神经网络基础

一、学习

1.卷积神经网络的应用

人脸识别、图像生成、图像风格转换、自动驾驶

2.传统神经网络和卷积神经网络
2.1搭建神经网络的步骤:
  1. 搭建神经网络结构
  2. 找到合适的损失函数(如:交叉熵损失函数、均方误差等)
  3. 找到合适的优化函数,更新参数(如:BP算法、随机梯度下降等)
2.2全连接神经网络:

全部由全连接层组成的神经网络

2.3区别:

全连接神经网络也可用于计算机视觉,但因处理图像时权重矩阵的参数过多,出现过拟合现象。而卷积神经网络通过卷积核将神经元相连实现了局部关联,同时因为使用的卷积核不变,所以实现了参数共享,大大降低了参数数量。

3.神经网络基本组成结构

一个典型的卷积神经网络通常由卷积层、池化层和全连接层交叉堆叠而成

  1. **卷积:**卷积是对两个实变函数的一种数学操作,即一种内积操作。
  2. **权重:**卷积核中的每一个值
  3. **感受野:**在进行一次卷积时,卷积核所对应的输入区域。
  4. **特征图:**经过一次卷积后输出的结果
  5. **padding:**有时因为步长大或者因为边界特征不能很好提取,因此会在边界置padding
  6. **步长:**卷积核每次移动的距离
  7. 深度: feature map厚度,卷积核个数
  8. 池化: 保留了主要特征的同时减少参数和计算量,防止过拟合,提高模型泛化能力。
  9. 全连接层: 两层之间所有神经元都有权重链接,通常在卷积神经网络尾部,全连接层参数量通常最大。通常进行展层之后与神经元相连。
4.卷积神经网络典型结构
4.1Alexnet:

在这里插入图片描述

4.2ZFNet:

在这里插入图片描述

4.3VGG:

在这里插入图片描述

4.4GoogleNet

在这里插入图片描述

4.5ResNet

在这里插入图片描述

二、实验

实验一 、MNIST数据集分类
1、加载数据

在这里插入图片描述

请添加图片描述

2、创建网络

这一步进行网络的构建和定义训练和测试函数

3、在小型全连接网络上训练

在这里插入图片描述

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

在这里插入图片描述

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

在全连接网络上训练和测试
在这里插入图片描述

在卷积神经网络上训练与测试

在这里插入图片描述

实验二、CIFAR10数据集分类
1、加载并归一化数据集

在这里插入图片描述
展示图片
在这里插入图片描述

2、定义网络、损失函数和优化器

在这里插入图片描述

3、训练网络

在这里插入图片描述

4、取出八张图片并进行识别实验,并查看准确率

在这里插入图片描述
在这里插入图片描述

实验三、使用VGG16对CIFAR10分类
1、定义dataloader

在这里插入图片描述

2、VGG网络定义
3、网络训练

在这里插入图片描述

4、测试验证准确率

在这里插入图片描述

三、问题与思考

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

dataloader中的shuffle的作用是是否对每次迭代时的数据进行打乱,如果需要打乱,则值为True,否则为False。

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

transform对图像进行预处理,提高模型泛化能力。经查阅,知道其有以下区别:
①裁剪
transforms.CenterCrop中心裁剪
transforms.RandomCrop随机裁剪
transforms.RandomResizedCrop随机长宽比裁剪
transforms.FiveCrop上下左右中心裁剪
transforms.TenCrop上下左右中心裁剪后翻转
②翻转
transforms.RandomHorizontalFlip(p=0.5)依概率p水平翻转
transforms.RandomVerticalFlip(p=0.5)依概率p垂直翻转
③旋转
transforms.RandomRotation随机旋转
④图像变换
transforms.Resize调整尺寸
transforms.Normalize标准化
 transforms.ToTensor转为tensor
transforms.Pad 填充
transforms.ColorJitter修改亮度、对比度和饱和度
transforms.Grayscale变为灰度图
transforms.LinearTransformation()线性变换
transforms.RandomAffine仿射变换
transforms.RandomGrayscale按照概率p转为灰度图
⑤数据增强
transforms.RandomChoice从给定的选一个进行操作
transforms.RandomApply按照概率进行操作
transforms.RandomOrder将t操作随机化

3.epoch 和 batch 的区别?

epoch指训练的次数,而batch指每一次训练一个epoch分割的每份。
epoch指所有的数据都进行一次训练,有时候损失函数不够小,需要多轮epoch。其为宏观层面上理解,
batch是由于一个epoch的数据量太多不利于操作,所以进行分割。

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

1×1的卷积和FC输出大小相同,但是FC在一开始根据图像大小设定好不能再变,而前者可以任意适应。1×1的卷积主要起到升维和降维的作用。

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

解决了梯度消失的问题,并且使用跨越的方式,变相增加了网络的深度。

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

激活函数LeNet使用了sigmoid函数,实验二使用的是RELU函数。
另外LeNet采用均值池化,实验二采用最大值池化。

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

使用1×1的卷积核改变图像大小即可。

8.有什么方法可以进一步提升准确率?

增加准确率最好的方式还是从本质上修改训练方法。此外的调整epoch次数、调整网络深度等方式,容易造成过拟合的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值