卷积神经网络
一、视频学习(心得体会).
- 了解了卷积神经网络的发展历程以及什么是就卷积神经网络。
- 了解了CNN的几个基本结构:卷积、池化、全连接。
- 了解了几个典型网络结构:AlexNet、VGG、GoogleNet、ResNet。
- 了解了卷积神经网络在计算机视觉、自然语言处理等领域重要意义。
- 神经网络的深度学习将会是未来人工智能发展的趋向。
二、代码练习
1.MNIST数据集分类
- 构造简单的CNN对数据集进行分类
- 随着训练次数不断增加、准确率也在不断增加。
2.CIFAR10数据及分类
- 利用CNN对CIFAR 10 数据集进行分类,分类并识别图片中的物理物体。
- 随着训练次数增加、准确率不断增加、出错率随之不断减小。
3.使用VGG16对CIFAR10分类
- 此处代码有少量错误,第一个错误是cfg未定义、改成self.cfg即可,然后就图片尺寸不匹配,该错误可在out=out.view前加入print(out.shape)可进行查看应有的尺寸,如下所示
def forward(self, x):
out = self.features(x)
print(out.shape)
out = out.view(-1,2048)
out = self.classifier(out)
return out
- 运行后输出结果如图所示,然后根据结果把2048改成相应的512或者51211即可
- 完整代码修改如下,此处应注意nn.Linear(51211, 10)的前项应该与out.view(-1,51211)的后项保持一致,不然会因不匹配导致出错
class VGG(nn.Module):
def __init__(self):
super(VGG, self).__init__()
self.cfg = [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M']
self.features = self._make_layers(self.cfg)
self.classifier = nn.Linear(512*1*1, 10)
def forward(self, x):
out = self.features(x)
out = out.view(-1,512*1*1)
out = self.classifier(out)
return out
- 修改后进行训练如下,测试图片通过率为83.66%,建议设置采用GPU训练,不然非常的慢。