python 卷积神经网络

实验二:卷积神经网络

  • 手写体识别
  • 数据准备

使用MNIST数字图像训练卷积神经网络

数据重塑和标签向量化

python 卷积神经网络_第1张图片

python 卷积神经网络_第2张图片

  • 建立基础卷积模型

卷积模型是Conv2D层和MaxPooling2D层的堆叠,本例中卷积神经网络处理大小为(28,28,1)的输入张量,这正是MNIST图像的格式

python 卷积神经网络_第3张图片

python 卷积神经网络_第4张图片

  • 建立分类卷积模型

python 卷积神经网络_第5张图片

  • 模型建立与训练

设置训练容器

优化算法、损失函数、监督矩阵

训练模型

指定输入、输出,指定迭代次数,指定数据块大小

  • 结果测试

python 卷积神经网络_第6张图片

  • 自主练习
  1. 改变网络的深度和宽度

 

深度

宽度

训练集精度

测试集精度

基准

3

64

0.9938

 

0.9919000267982483

 

深度不变,减小宽度

3

32

0.9920

 

0.9886000156402588

 

深度不变,增大宽度

3

128

0.9950

 

0.9922999739646912

 

宽度不变,减小深度

2

64

0.9954

 

0.9873999953269958

 

宽度不变,增大深度

4

64

0.9936

 

0.9891999959945679

 

由此可见,增大卷积神经网络的宽度,训练集和测试集上的精度都有所增加。改变深度会导致测试集上的精度均有所下降。

  1. 改变优化算法

优化算法

训练集精度

测试集精度

Sgd

0.9986
0.9933000206947327

Adagrad

0.9924
0.9912999868392944

Adadelta

0.9944
0.9927999973297119

RMSprop

0.9944
0.9918000102043152

Adam

0.9934
0.9897000193595886

Adamax

0.9922
0.9911000132560731

由此可见,sgd算法对于该问题最有效

  • 猫、狗的二分类问题
  • 数据准备

从数据目录中选取猫、狗的1000张、500张、500张图片分别作为训练数据、验证数据、测试数据,并建立相关目录进行存放。

python 卷积神经网络_第7张图片

python 卷积神经网络_第8张图片

python 卷积神经网络_第9张图片

  • 数据预处理

将JPEG文件解码为RGB像素网格

将这些像素网格转换为浮点数向量

将像素值(0-255)缩放到[0,1]区间

python 卷积神经网络_第10张图片

  • 模型建立

建立卷积层和池化层进行模型训练

使用分类层进行二分类猫狗图片

python 卷积神经网络_第11张图片

  • 模型训练

使用批量生成器拟合模型

python 卷积神经网络_第12张图片

  • 数据增强

数据增强是从现有的训练样本中生成更多的训练模型,其方法是利用多种能够生成可信图像的随机变换来增加样本。其目标是,模型在训练时不会两次查看完全相同的图像。这让模型能够观察到数据的更多内容,从而具有更好的泛化能力。

通过变换、旋转、压缩等来产生新的数据

python 卷积神经网络_第13张图片

  • 随机丢弃

在模型中添加一个Dropout层,添加在密集连接分类器前

python 卷积神经网络_第14张图片

python 卷积神经网络_第15张图片

  • 结果分析
  • 预训练下的猫狗分类(不使用数据增强)
  • 预训练模型

使用VGG16卷积网络提取特征

python 卷积神经网络_第16张图片

python 卷积神经网络_第17张图片

  • 分类模型建立

python 卷积神经网络_第18张图片

python 卷积神经网络_第19张图片

  • 模型建立与训练

设置训练容器

训练模型

python 卷积神经网络_第20张图片

  • 结果展示

python 卷积神经网络_第21张图片

 


pytho

你可能感兴趣的:(人工智能)