手把手教你用Keras框架写CNN(附全部代码和注解)

1:
首先你得准备好Pycharm,Anaconda
然后是第三方类库numpy,tensorflow,matplotlib,keras
Keras
框架能简单上手,高度集成,利用这个框架写出来的CNN就可以作图片识别了。我们这里识别minst数据集。
[mnist数据集](链接:https://pan.baidu.com/s/1Jt4p5EYF5mPzhiGGhrMN3A
提取码:mz1w)

mnist数据集包含60,000个用于训练的示例和10,000个用于测试的示例。这些数字已经过尺寸标准化并位于图像中心,图像是固定大小(28x28像素),其值为0到1。为简单起见,每个图像都被平展并转换为784(28 * 28)个特征的一维numpy数组。
是长这个样子的:
手把手教你用Keras框架写CNN(附全部代码和注解)IDE和数据都有了,下面开始
2.导入库和模块
手把手教你用Keras框架写CNN(附全部代码和注解)从mnist中加载图像数据
手把手教你用Keras框架写CNN(附全部代码和注解)我们可以查看数据的构造
print(x_train.shape)
手把手教你用Keras框架写CNN(附全部代码和注解)
print(y_train.shape)
手把手教你用Keras框架写CNN(附全部代码和注解)x_train是训练集的数据,可以看到它的结构是28X28的,y_train其实是标签文件。比如x_train[0]代表着数字5的图片
手把手教你用Keras框架写CNN(附全部代码和注解)那么y_train[0]就标注着5,它们是对应的
手把手教你用Keras框架写CNN(附全部代码和注解)
接下来要对图像数据作预处理,CNN的输入维度还要再加上“深度”
手把手教你用Keras框架写CNN(附全部代码和注解)
接下来要预处理数据标签,这一步是为了之后的分类的方便准备的。因为0-9一共有十个数字,识别这些样本就是为了对这些样本作分类。
手把手教你用Keras框架写CNN(附全部代码和注解)
3.以上都是数据的处理,接下来到关键的模型搭建了
先Sequential(),译为贯序模型。有了它之后,接下来的搭建行为就可以看做‘“垒砖”,第一层……第n层

手把手教你用Keras框架写CNN(附全部代码和注解)第一层就是卷积层
手把手教你用Keras框架写CNN(附全部代码和注解)32代表32个filter,filter大小3X3,**函数是relu,input_shape代表输入图片宽28高28深度为1
接下来是池化层
手把手教你用Keras框架写CNN(附全部代码和注解)这里的pool_size就是池化层filter,大小是2X2
再接下来我们就要添加全连接层了,
手把手教你用Keras框架写CNN(附全部代码和注解)
最后一个是输出层
手把手教你用Keras框架写CNN(附全部代码和注解)
最难的部分已经过去,我们开始编译模型。告诉模型我们需要损失值,识别精度和优化方法来帮助判断模型的效果
手把手教你用Keras框架写CNN(附全部代码和注解)
查看一下我们搭建的模型
手把手教你用Keras框架写CNN(附全部代码和注解)可以看到输出的图片维度和神经元的参数个数
开始训练模型
手把手教你用Keras框架写CNN(附全部代码和注解)
epoch代表训练 轮数,batch_size代表批处理数据规模,validation_split是在训练集中划分出30%作为验证集
最后结果:可以看到训练精度还是可以的
手把手教你用Keras框架写CNN(附全部代码和注解)
怎么样,是不是很简单。
全部代码:

手把手教你用Keras框架写CNN(附全部代码和注解)
手把手教你用Keras框架写CNN(附全部代码和注解)
手把手教你用Keras框架写CNN(附全部代码和注解)
手把手教你用Keras框架写CNN(附全部代码和注解)
手把手教你用Keras框架写CNN(附全部代码和注解)手把手教你用Keras框架写CNN(附全部代码和注解)
还可以用这个代码去识别其他的数据集。