在此篇博客中我们将学习使用TensorFlow搭建一个卷积神经网络(CNN)模型,并使用它来训练MNIST数据集。
构建一个CNN模型需要以下几个步骤:
(1) 定义输入数据,并预处理数据。这里我们首先读取MNIST数据集,并分别得到训练集的图片和标签的矩阵,以及测试集的图片和标签矩阵。代码如下:
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets('MNIST_data',one_hot=True)
trX,trY,teX,teY=mnist.train.images,mnist.train.labels,mnist.test.images,mnist.test.labels
接着需要对数据进行处理,我们要把trX和trY的shape变成[-1,28,28,1]这里-1表示不需要考虑输入图像的数量,28×28是图像的长宽像素值,1表示图像的通道数(这里是黑白图像所以为1通道)。代码如下:
trX=trX.reshape(-1,28,28,1)
teX=teX.reshape(-1,28,28,1)
X=tf.placeholder('float',[None,28,28,1])
Y=tf.placeholder('float',[None,10])
(2) 初始化权重与定义网络。这里我们将搭建一个拥有3个卷基层和三个池化层,随后接1个全连接层和1个输出层的卷积神经网络。代码如下ÿ