卷积神经网络图像识别python代码_Python深度学习-初识卷积神经网络_1

9d818f573a3eb4fb621b352168d6ce31.png

文章目录

卷积神经网络意义

案例演示

数据准备

卷积层、池化层

全连接层

计算损失值

初始化optimizer

指定迭代次数,并在session执行graph

完整代码如下

卷积神经网络意义

对于MNIST数据集来说,采用逻辑回归对数据进行辨别似乎已经达到极限,无法通过细枝末节的修补对其准确度做出更进一步的提高,因此本章开始放弃原有模型而采用全新的卷积神经网络对数据进行处理。对于任意一个卷积网络来说,几个必不可少的部分为:

  1. 输入层:用以对数据进行输入
  2. 卷积层:使用给定的核函数对输入的数据进行特征提取,并根据核函数的数据产生若干个卷积特征结果
  3. 池化层:用以对数据进行降维,减少数据的特征
  4. 全连接层:对数据已有的特征进行重新提取并输出结果

案例演示

数据准备

5f4dd558142c9749e974ba418928904b.png

卷积层、池化层

在程序中首先创建两个卷积层,TensorFlow中将卷积层已经实现并封装完毕,其他人只需调用即可

f2b6918b0401c0fd4bc5f30d0e39daf9.png

上面代码段中首先定义了卷积核w_conv,其中的四个参数[5,5,1,32],前两者参数5,5是卷积核的大小,代表卷积核是一个[5,5]的矩阵所构成,而第三个参数是输入的数据通道,第四个参数即为输出的数据通道(卷积核的个数)

在这里:ksize=[1, 2, 2, 1]指的是池化矩阵的大小,即使用[2,2]的矩阵,而第三个参数strides=[1, 2, 2, 1]指的是池化层在每一维度上滑动的步长。通过第一个卷积层和池化层,输入的数据被转化成[None,7,7,120]的大小的新的数据集,之后再通过一次全连接层对数据进行重新分类

全连接层

6f6b1e5fd3c0fceeb037594595bf5427.png

计算损失值

0edbe8e4fce25969007bd9cec6f7f917.png

初始化optimizer

2f7aff2cc8e3d5f4a46d94bea7808e6d.png

指定迭代次数,并在session执行graph

193304711457206a33c3d4786c9a5d79.png

完整代码如下

caa0504d288366ef913aa6b4da4adf7f.png
90c62097d1d2da198871319e29520901.png

版权声明:本文为weixin_39740272原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。