第2章 2.1 基于全连接网络的手写数字识别实例_第1页
第2章 2.1 基于全连接网络的手写数字识别实例_第2页
第2章 2.1 基于全连接网络的手写数字识别实例_第3页
第2章 2.1 基于全连接网络的手写数字识别实例_第4页
第2章 2.1 基于全连接网络的手写数字识别实例_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于全连接网络的手写数字识别实例基于全连接网络的手写数字识别实例Keras自带读取常用测试数据集的函数,这些函数能够自动从网上下载相应的数据集并保存为.npz格式的文件。MNIST数据集有60000张训练图片和10000张测试图片,每张都是28×28的灰度图片,像素值是0到255的整数;每张图片都有一个标签,标签是0到9这10个数字之一。训练集和相应的标签分别保存在numpy数组x_train和y_train中。MNIST数据集图片样本示例如图所示,其中每一列都是同一个数字的图片。#数据加载fromkerasimportdatasets(x_train,y_train),(x_test,y_test)=datasets.mnist.load_data()数据加载深度神经网络必须从数据中学习潜在特征。#数据预处理#把像素值转换为0到1的值x_train=x_train/255.0x_test=x_test/255.0#模型要求把标签转换为独热编码,例如:2转换为[0,1,0,0,0,0,0,0,0,0]fromkerasimportutilsy_train=utils.to_categorical(y_train,num_classes=10)y_test=utils.to_categorical(y_test,num_classes=10)数据预处理数据预处理的方法有很多,如标签格式转换、样本变换等。在手写数字识别的例子中,需要把图片的像素值转换为0到1的值,并把标签转换为独热编码(One-Hot格式)。#构建网络#输入层的大小为28×28,并转换为784维,中间层512维,输出层10维(对应10个类别)fromkerasimportSequential,layersmodel=Sequential()model.add(layers.Reshape((28*28,),input_shape=(28,28)))model.add(layers.Dense(512,activation='relu'))model.add(layers.Activation('relu'))model.add(layers.Dense(10,activation='softmax'))model.summary()构建网络构建网络是深度学习非常重要的一个步骤。如果网络结构太简单则可能无法学习到足够丰富的特征,如果网络结构太复杂则可能出现过拟合或梯度消失等问题。对于不同的数据要选择合适的网络结构才能取得较好的结果。以下代码构建一个具有一个输入层、一个形状改变层和两个全连接层的前馈神经网络。训练网络构建网络之后,需要用大量的数据对网络进行训练,求解网络中的所有可学习的参数,使得网络的损失越小越好。优化算法一般是基于梯度下降的。使用随机梯度下降法(StochatisGradientDescent,SGD)求解网络的参数,网络使用分类交叉熵损失函数。为了调整模型从而取得更好的识别效果,还需要观察损失和分类精度等评价指标在训练过程中的变化,选择性能监控指标accuracy(分类精度)作为Keras模型的compile函数的metrics参数值来输入,在训练的时候可以输出该指标的变化。同时,为了保存训练过程中得到的识别效果比较好的模型权重,在fit函数中传入callbacks回调函数,它能够在每一代网络训练结束时保存在验证集上分类精度最好的模型权重,每一代保存为一个单独的.h5文件。fromkerasimportoptimizersoptimizer=optimizers.SGD(lr=0.5)pile(optimizer,loss='categorical_crossentropy',metrics=['accuracy'])fromkerasimportcallbacksmy_callbacks=[#每一代训练结束时保存监测指标(验证集分类精度)最好的模型的权重callbacks.ModelCheckpoint(filepath='mymodel_{epoch:02d}.h5',monitor='val_accuracy',#监测验证集分类精度

save_best_only=True),]#训练模型model.fit(x_train,y_train,validation_data=(x_test,y_test),batch_size=128,epochs=5,callbacks=my_callbacks)#保存最后训练好的模型的权重model.save_weights('mymodel.h5')训练网络print('\nTesting-------------------')model.load_weights('mymodel.h5')loss,accuracy=model.evaluate(x_test,y_test)print('Testloss:',loss)print('Testaccuracy:',accuracy)model.load_weights('mymodel.h5')loss,accuracy=model.evaluate(x_test,y_test)print('Testloss:',loss)print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论