手把手教你用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数组。
是长这个样子的:IDE和数据都有了,下面开始
2.导入库和模块从mnist中加载图像数据
我们可以查看数据的构造
print(x_train.shape)
print(y_train.shape)x_train是训练集的数据,可以看到它的结构是28X28的,y_train其实是标签文件。比如x_train[0]代表着数字5的图片
那么y_train[0]就标注着5,它们是对应的
接下来要对图像数据作预处理,CNN的输入维度还要再加上“深度”
接下来要预处理数据标签,这一步是为了之后的分类的方便准备的。因为0-9一共有十个数字,识别这些样本就是为了对这些样本作分类。
3.以上都是数据的处理,接下来到关键的模型搭建了
先Sequential(),译为贯序模型。有了它之后,接下来的搭建行为就可以看做‘“垒砖”,第一层……第n层
第一层就是卷积层
32代表32个filter,filter大小3X3,**函数是relu,input_shape代表输入图片宽28高28深度为1
接下来是池化层这里的pool_size就是池化层filter,大小是2X2
再接下来我们就要添加全连接层了,
最后一个是输出层
最难的部分已经过去,我们开始编译模型。告诉模型我们需要损失值,识别精度和优化方法来帮助判断模型的效果
查看一下我们搭建的模型可以看到输出的图片维度和神经元的参数个数
开始训练模型
epoch代表训练 轮数,batch_size代表批处理数据规模,validation_split是在训练集中划分出30%作为验证集
最后结果:可以看到训练精度还是可以的
怎么样,是不是很简单。
全部代码:
还可以用这个代码去识别其他的数据集。