第三次作业 卷积神经网络

一.学习心得

此次视频学习主要介绍了卷积神经网络以及一些典型模型。

首先我们回顾了深度学习的三大步骤:

深度学习三部曲:

1、搭建神经网络

2、找到合适的损失函数:交叉熵损失、均方误差

3、找到合适的优化函数,更新参数:反向传播、随机梯度下降

之后我们了解了传统神经网络和卷积神经网络的不同,传统神经网络中,神经元与隐层输出以全连接的方式连接,参数过多,导致过拟合,过拟合的表现就是模型在训练集中的误差很小,但是在测试机中的误差却很大,导致过拟合的原因有训练集和测试集上的特征分布不一致、模型过于复杂(噪声数据也会被拟合)等。而卷积神经网络则是通过局部关联、参数共享来降低参数的数量。

卷积神经网络中主要有卷积层、池化层和全连接层。

​ 卷积层的任务是通过卷积核/滤波器计算出特征图(y = wx + b w:卷积核/滤波器 x:卷积区域 b:偏置项),特征图的大小计算公式是:无padding:{(输入大小 - 卷积核大小)/步长 + 1},有padding:{(输入大小 + padding * 2 - 卷积核大小)/步长 + 1}

卷积核也可以称为权重矩阵,其值的大小就是该位置的权重。

​ 池化就是在保留主要特征的同时减少参数量和计算量,也就是输入压缩,主要的两种池化方法是最大值池化和平均值池化。

​ 虽然全连接不适合用于特征提取但是其可以将“分布式特征表示”映射到样本标记空间,起到“分类器”的作用。

之后我们了解了卷积神经网络的典型结构,如AlexNet,该模型使用了ReLU函数在一定程度上解决了传统Sigmoid函数梯度下降的问题、VGG,其使用了更多模型层数、GoogleNet模型以及ResNet。

ResNet中的残差思想:消除相同部分,突出微小差别。

二.代码练习

MNIST_数据集分类

数据的加载和预处理

  1. torchvision.transforms是pytorch中的图像预处理包。一般用Compose把多个步骤整合到一起:
  2. 我们可以使用 transforms.ToTensor() 将 PIL.Image/numpy.ndarray 数据进转化为torch.FloadTensor,并归一化到[0, 1.0]:
  3. Normalize用于标准化图像数据取值 .Normalize(mean, std, inplace=False) input[channel] = (input[channel] - mean[channel]) / std[channel]

 

 

 

 

Softmax函数常用的用法是指定参数dim就可以:

LogSoftmax其实就是对softmax的结果进行log,即Log(Softmax(x))

log下什么都不写默认是自然对数

(1)dim=0:对每一列的所有元素进行softmax运算,并使得每一列所有元素和为1

(2)dim=1:对每一行的所有元素进行softmax运算,并使得每一行所有元素和为1

​ 定义网络时,需要继承nn.Module,并实现它的forward方法,把网络中具有可学习参数的层放在构造函数init中。

只要在nn.Module的子类中定义了forward函数,backward函数就会自动被实现(利用autograd)。

  • cpu()将变量放在cpu上,仍为tensor:

  • numpy()将tensor转换为numpy:注意cuda上面的变量类型只能是tensor,不能是其他

  • GPU 上的Tensor 不能直接转换为NumPy ndarray

定义网络结构(可以用Sequential,也可以不使用

 

 全连接网络训练结果

 

 卷积神经网络训练结果

 

 CIFAR10数据分类

 

 

 

 

 

 用VGG16进行CIFAR10分类

transform,dataloader 和之前定义的有所不同,不同之处在于训练部分的数据集增加了数据的增强,利用随机裁剪以及随机翻转,以期待增强模型的泛化能力

在训练过程中,数据分布会发生变化,对下一层网络的学习带来困难。Batch Normalization将数据拉回到均值为0,方差为1的正态分布上(归一化),一方面使得数据分布一致,另一方面避免梯度消失、梯度爆炸。

执行GitHub上代码是发现了一个小bug,这里传入的cfg需要改成self.cfg,否则会报未定义的错误

 

 需要删除掉最后的最大池化层,否则无法让全连接层的输入满足2048

 

 使用全连接层输入为2048的正确率为87.38%左右

 

 使用全连接层输入为512的正确率为87.57%左右

 

posted @ 2021-10-17 21:10  尹鹏辉  阅读(86)  评论(0)    收藏  举报