一、视频学习:卷积神经网络(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 一种函数或变换,输入目标,进行变换。
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)测试验证准确率
此部分借鉴了教程,因为上一部分没有运行出来