欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记录二:tensorflow2.0写MNIST手写体

程序员文章站 2022-05-18 20:15:28
最近学习神经网络,tensorflow,看了好多视频,查找了好多资料,感觉东西都没有融入自己的思维中。今天用tensorflow2.0写了一个MNIST手写体的版本,记录下学习的过程。 复现手写体识别的基本步骤:准备数据,处理数据,搭建模型,迭代训练模型,使用模型。 一、全连接模型 1、导入数据集( ......

  最近学习神经网络,tensorflow,看了好多视频,查找了好多资料,感觉东西都没有融入自己的思维中。今天用tensorflow2.0写了一个mnist手写体的版本,记录下学习的过程。

复现手写体识别的基本步骤:准备数据,处理数据,搭建模型,迭代训练模型,使用模型。

 

一、全连接模型  

1、导入数据集(此次编写运行均在notebook)

  先引入所需模块,在用tf.keras下载数据

  记录二:tensorflow2.0写MNIST手写体

  2、分析图片的大小

  1)用shape查看数量大小;2)通过指定[0][1]来查看具体图像尺寸,lable存储的是image对应的数值

  记录二:tensorflow2.0写MNIST手写体

 

 

 

  3、处理数据

  就将原先的0-9label转换为独热编码,独热编码即 one-hot 编码,又称一位有效编码,其方法是使用n位状态寄存器来对n个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。

    记录二:tensorflow2.0写MNIST手写体记录二:tensorflow2.0写MNIST手写体

 

  4、构建模型

  1)tf.keras.sequential()构建一个顺序模型(此处模型的层数参照3bluebrown4层)

  2)第一层输入层是28*28个神经元,由传入图像的像素大小决定,flatten是用来格式化数据的,将数据转化为一列。

  3)第二层和第三层各16个神经元,激活函数定义为sigmoid

  4)第四层输出层0-9,一共输出10个不同的,softmax是概率分布型

  记录二:tensorflow2.0写MNIST手写体

 

 

 

 5、训练模型 

  1)model.compile(loss='目标函数', optimizer=optimizer, metrics=['accuracy'])

  2)fit( x, y, batch_size=32, epochs=10, verbose=1, callbacks=none, validation_split=0.0, validation_data=none, shuffle=true, class_weight=none, sample_weight=none, initial_epoch=0)

  记录二:tensorflow2.0写MNIST手写体

  6、图观模型

  一百次后,测试集跟训练集的准确性图示

记录二:tensorflow2.0写MNIST手写体

二、卷积模型

卷积网络大体布置为卷积层-池化层-全连接层。基础知识储备如何进行卷积前的估算,并且对相关数据进行调整,添加一层channel,确保数据一致性。

       2.1基础知识储备(卷积参数参照lenet-5)

           记录二:tensorflow2.0写MNIST手写体

 

 

 

       2.2加载并对数据进行处理,与全连接不同的是,对数据还要再添加一层channel,手写体是黑白图片,故而设置为1。

      记录二:tensorflow2.0写MNIST手写体

 

 

 

       2.3参照上面的卷积处理,建立模型,并运行模型

   记录二:tensorflow2.0写MNIST手写体

 

 

  2.4 模型运行结果图示

 

   记录二:tensorflow2.0写MNIST手写体