基于tensorflow+RNN的MNIST数据集手写数字分类

2018年9月25日笔记

tensorflow是谷歌google的深度学习框架,tensor中文叫做张量,flow叫做流。
RNN是recurrent neural network的简称,中文叫做循环神经网络。
MNIST是Mixed National Institue of Standards and Technology database的简称,中文叫做美国国家标准与技术研究所数据库
此文在上一篇文章《基于tensorflow+DNN的MNIST数据集手写数字分类预测》的基础上修改模型为循环神经网络模型,模型准确率从98%提升到98.5%,错误率减少了25%
《基于tensorflow+DNN的MNIST数据集手写数字分类预测》文章链接:https://www.jianshu.com/p/9a4ae5655ca6

0.编程环境

操作系统:Win10
tensorflow版本:1.6
tensorboard版本:1.6
python版本:3.6

1.致谢声明

本文是作者学习《周莫烦tensorflow视频教程》的成果,感激前辈;
视频链接:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/

2.配置环境

使用循环神经网络模型要求有较高的机器配置,如果使用CPU版tensorflow会花费大量时间。
读者在有nvidia显卡的情况下,安装GPU版tensorflow会提高计算速度50倍。
安装教程链接:https://blog.csdn.net/qq_36556893/article/details/79433298
如果没有nvidia显卡,但有visa信用卡,请阅读我的另一篇文章《在谷歌云服务器上搭建深度学习平台》,链接:https://www.jianshu.com/p/893d622d1b5a

3.下载并解压数据集

MNIST数据集下载链接: https://pan.baidu.com/s/1fPbgMqsEvk2WyM9hy5Em6w 密码: wa9p
下载压缩文件MNIST_data.rar完成后,选择解压到当前文件夹不要选择解压到MNIST_data。
文件夹结构如下图所示:

10345471-2465b3dc31757727.png
image.png

4.完整代码

此章给读者能够直接运行的完整代码,使读者有编程结果的感性认识。
如果下面一段代码运行成功,则说明安装tensorflow环境成功。
想要了解代码的具体实现细节,请阅读后面的章节。
完整代码中定义函数RNN使代码简洁,但在后面章节中为了易于读者理解,本文作者在第6章搭建神经网络将此部分函数改写为只针对于该题的顺序执行代码。

import warnings
warnings.filterwarnings('ignore')
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

tf.reset_default_graph()
mnist &
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我可以为您介绍一下mnist数据集分类和数据扩增的相关内容。 mnist数据集是一个常用的手写数字识别数据集,包含了60000个训练样本和10000个测试样本。每个样本都是一个28x28像素的灰度图像,表示了0到9之间的一个手写数字。 对于mnist数据集分类任务,可以使用各种机器学习算法或深度学习模型来进行训练和预测。常见的深度学习模型包括卷积神经网络(CNN)和循环神经网络(RNN)。这些模型可以通过对训练样本进行学习,来预测测试样本的数字标签。 数据扩增是指通过对原始数据进行一系列变换和操作,生成更多的训练样本,以增加模型的泛化能力和鲁棒性。在mnist数据集中,常见的数据扩增操作包括旋转、平移、缩放、翻转等。这些操作可以通过图像处理库(如OpenCV)或深度学习框架(如TensorFlow、PyTorch)中的函数来实现。 通过数据扩增,可以生成更多样本,使得模型在训练过程中能够学习到更多的变化和特征,从而提高模型的分类性能。 下面是一个使用Python和TensorFlow进行mnist数据集分类和数据扩增的示例代码: ```python import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.preprocessing.image import ImageDataGenerator # 加载mnist数据集 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 数据扩增 datagen = ImageDataGenerator( rotation_range=10, # 随机旋转角度范围 width_shift_range=0.1, # 随机水平平移范围 height_shift_range=0.1, # 随机垂直平移范围 zoom_range=0.1, # 随机缩放范围 horizontal_flip=False # 不进行水平翻转 ) # 对训练集进行数据扩增 x_train_augmented = datagen.flow(x_train, y_train, batch_size=32) # 构建模型 model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(x_train_augmented, epochs=10) # 在测试集上评估模型 model.evaluate(x_test, y_test) ``` 这段代码首先加载mnist数据集,然后使用ImageDataGenerator进行数据扩增操作。接下来,构建一个简单的神经网络模型,并使用编译后的模型对扩增后的训练集进行训练。最后,使用测试集评估模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值