深度学习笔记:用卷积神经网络进行MNIST手写数字识别.docx
《深度学习笔记:用卷积神经网络进行MNIST手写数字识别.docx》由会员分享,可在线阅读,更多相关《深度学习笔记:用卷积神经网络进行MNIST手写数字识别.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、深度学习笔记:用卷积神经网络进行MNIST手写数字识别0.前言上一篇深度学习笔记基于Keras库的MNIST手写数字识别s:/首先把后面代码要用到的库先加载一下。fromtensorflowimportkerasfromtensorflow.kerasimportlayersfromtensorflow.kerasimportutilsimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinline1.Sequential类vs函数式APIKeras中定义模型有两种方法一种是使用Sequential类仅限于以层的线性堆叠的方式构建模型线性
2、堆叠也是最常用的神经网络构造另一种是函数式API(functionalAPI),用于由层模块构成有向无环图以这种方式可以构建任意形式的网络构造。以下我们分别以这两种形式搭建一个用于MNIST识别的简单的卷积神经网络以比照两种模型构建方式的不同之处。但是在如今这个简单的例子中两种形式的模型构建方式没有什么差异。1.1基于Sequential类的方式model_seqkeras.Sequential(layers.Conv2D(filters32,kernel_size3,activationrelu),layers.MaxPooling2D(pool_size2),layers.Conv2D(f
3、ilters64,kernel_size3,activationrelu),layers.MaxPooling2D(pool_size2),layers.Conv2D(filters128,kernel_size3,activationrelu),layers.Flatten(),layers.Dense(10,activationsoftmax)#*Buildthemodelanddisplayingthemodelssummary*model_seq.build(input_shape(None,28,28,1)model_seq.summary()1.2基于函数式API的方式inputs
4、keras.Input(shape(28,28,1)xlayers.Conv2D(filters32,kernel_size3,activationrelu)(inputs)xlayers.MaxPooling2D(pool_size2)(x)xlayers.Conv2D(filters64,kernel_size3,activationrelu)(x)xlayers.MaxPooling2D(pool_size2)(x)xlayers.Conv2D(filters128,kernel_size3,activationrelu)(x)xlayers.Flatten()(x)outputslay
5、ers.Dense(10,activationsoftmax)(x)modelkeras.Model(inputsinputs,outputsoutputs)#*Displayingthemodelssummary*model.summary()最后model.summary()打印出来的结果于上一节完全一致。这也讲明了两种模型构建方式本质上是一致的。但是要注意的一点是Sequential类方式构建时在调用model.summary()之前需要先调用model.bulild()传入参数input_shape告诉模型它的输入数据的shape否那么没法计算参数量。当然可以以它的第一层layers.
6、Conv2D()中通过参数input_shape指定输入数据的shape。1.3神经网络的参数个数和每层的数据维度变化大众可能会好奇以上model.summary()打印出来的信息是怎么来的详细来讲就是神经网络的参数的个数和层与层之间的数据维度是按什么规律变化的。Tobeadded.2.编译以及训练数据的加载以及预处理在上一篇已经做了简单的解释这里就不再赘述了。这里我们考虑两种标签向量化的方法。第一种方法是直接将标签列表转换为整数张量其实就是用原始的整数型标签即原来的0,1,2,.9标签值另一种方法是使用one-hot编码。one-hot编码是分类数据广泛使用的一种格式也叫分类编码(categ
7、oricalencoding)。对应于两种标签表示方式固然都是使用穿插熵(crossentropy)损失函数但是形式上有所不同。整数类型标签对应的损失函数为sparse_categorical_crossentropy而使用分类编码标签时对应的损失函数为categorical_crossentropy。这一章的训练我们仍然使用整数类型标签,sparse_categorical_crossentropy在以函数API方式构建的模型上进展训练.2.1数据加载以及预处理fromtensorflow.keras.datasetsimportmnist(train_images,train_labels
8、),(test_images,test_labels)mnist.load_data()train_imagestrain_images.reshape(60000,28,28,1)train_imagestrain_images.astype(float32)/255test_imagestest_images.reshape(10000,28,28,1)test_imagestest_images.astype(float32)/2552.2用原始的(整数值型)标签进展编译以及训练modelpile(optimizerrmsprop,losssparse_categorical_cross
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深度 学习 笔记 卷积 神经网络 进行 MNIST 手写 数字 识别
限制150内