一、视频学习:卷积神经网络(CNN)
1.应用

用作分类、检索、分割

具体应用:人脸识别,人脸表情识别、图像生成、图片风格转换、自动驾驶

2.传统神经网络vs卷积神经网络

全连接网络处理图像的问题:参数过多导致过拟合

卷积神经网络的解决方式:局部关联,参数共享

3.基本组成结构

卷积(对两个实变函数的一种数学操作)、池化、全连接

4.卷积神经网络典型结构

Alex Net、ZF Net、VGG、Google Net、Res Net

二、代码练习:
1.使用 PyTorch 进行CNN的训练与测试

1)MNIST加载数据

使用方法:torchvision.datasets.MNIST(root, train=True, transform=None, target_transform=None, download=False)

  • root 为数据集下载到本地后的根目录,包括 training.pt 和 test.pt 文件
  • train,如果设置为True,从training.pt创建数据集,否则从test.pt创建。
  • download,如果设置为True, 从互联网下载数据并放到root文件夹下
  • transform, 一种函数或变换,输入PIL图片,返回变换之后的数据。
  • target_transform 一种函数或变换,输入目标,进行变换。

图片1

2)创建网络

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

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

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

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

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

在全连接网络上训练与测试:

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

2.CNN_CIFAR10

1)首先,加载并归一化 CIFAR10 使用 torchvision 。torchvision 数据集的输出是范围在[0,1]之间的 PILImage,我们将他们转换成归一化范围为[-1,1]之间的张量 Tensors。下面展示 CIFAR10 里面的一些图片:

2)接下来定义网络,损失函数和优化器。训练网络:

3)从测试集中取出8张图片:

4)我们把图片输入模型,CNN对这些图片识别结果:

可以看出,其中有frog被识别为deer,car识别为truck

5)网络在整个数据集上的表现:

3.使用 VGG16 对 CIFAR10 分类

1)定义 dataloader

2)VGG网络定义

3)网络训练

这一部分由于代理的不稳定以及校园网的不稳定,总是执行过半后重新执行,最终也没能finish

4)测试验证准确率

此部分借鉴了教程,因为上一部分没有运行出来

posted on 2021-10-17 20:22  小蕾Sophie  阅读(12)  评论(0)    收藏  举报