深度学习入门笔记系列 ( 五 )

简介: 本系列将分为 8 篇 。本次为第 5 篇 ,结合上一篇的应用实例 ,将前边学到一些基础知识用到手写数字的识别分类上 。

基于 tensorflow 的手写数字的识别(简单版本)

本系列将分为 8 篇 。本次为第 5 篇 ,结合上一篇的应用实例 ,将前边学到一些基础知识用到手写数字的识别分类上 。

1.关于 MNIST 数据集

首先 ,我们得了解 MNIST 数据集 。这是一个手写数字数据集 ,在深度学习入门学习中极具代表性 。可以从官网下载该数据集 ,但事实上 TensorFlow 中提供了一个类来处理 MNIST 数据 ,这个类会自动下载并转化格式 ,将数据从原始的数据包中解析成训练和测试神经网络时使用的格式 ,具体相关函数在接下来代码中介绍 。
MNIST 数据集被分为训练数据集(60000张手写数字图片)和测试数据集(10000张手写数字图片)。
每一张图片包含 2828 个像素 ,图片里的某个像素的强度值介于0-1之间。例如 ,数字 1 对应一个 2828 像素图片 ,其像素强度如下 :

image

我们把这一个数组展开成一个向量 ,长度是 28*28=784 。因此在MNIST训练数据集中 mnist.train.images 是一个形状为 [60000, 784] 的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。

image

2.one-hot 向量和 Softmax 函数

MNIST 数据集标签为 0-9 十个数字 ,我们用 one-hot 向量来表示 。以MNIST 数据集为例 ,one-hot 向量指的是除了某一位数字为 1 ,其他维度都为 0 ,比如数字 1 对应 [0,1,0,0,0,0,0,0,0,0] 。
那么我们就可以得到数据集中对应的标签(labels)是若干个 one-hot 向量组成的矩阵 。以训练集为例 ,是一个 [60000,10] 的数字矩阵 。

另一个重要的知识就是 Softmax 函数 。如果是二分类问题 ,我们可以考虑用 sigmoid 或 tanh 等进行分类 ,即分为是或否 。这里是多分类问题 ,softmax 就很合适了 。这里小詹不知道怎么描述容易让大家理解 ,借鉴一个博客链接给出一段较为生动的描述 。

我们知道 max ,假如说我有两个数 ,a 和 b ,并且 a > b ,如果取 max ,那么就直接取 a ,没有第二种可能 。但有的时候我希望分值大的那一项(a) 经常取到 ,分值小的那一项 (b) 也偶尔可以取到 ,那么我用 softmax 就可以了 。(尊重原创 ,附上这段话链接:https://blog.csdn.net/supercally/article/details/54234115

3.MNIST 数据集识别实战

以上已经对基本的知识进行了介绍 ,这里进行实战讲解 。我们首先要设计一个网络结构 ,然后根据第四讲中的 “三步走” 步骤进行实现 。这里简单版本先设计一个简单到不能更简单的网络实现手写数字的识别分类 。

训练过程 ,每一张图片输入的可以看成一个长度为 784 的向量 ,输出为 0-9 中的一个 ,即有 10 种可能 ,或者说这就是一个 10 分类问题 。所以我们采取输入层 784 个神经元 ,全连接到输出层 10 个神经元 。( 哪个帅哥写的字 ?这么丑 !哈哈)

image

首先 ,需要读取 MNIST 数据集 ,利用 TF 框架自带类进行下载读取 。

image

接下来就是根据之前的 “三步走” 进行实践 。实现上述的最简单的网络结构 ,并依旧选择二次代价函数和梯度下降法 。

image

再在会话 Session 中执行 。代码如下 :

image

这里小詹讲一下下面这两行代码如何求出了 accuracy 。

image

因为这里无论是数据集中的 labels ,还是预测值 prediction 都是以 one-hot 向量形式存在 。tf.argmax 返回一维张量中最大值所在位置 ,若某一张图片数据的 label 和对该图片的预测 最大值在同一个位置(例如数字 3 ,预测结果和 label 对应的 one-hot 向量都为[0,0,0,1,0,0,0,0,0,0]),此时 tf.equal 则返回值为 1 ,反之为 0 。即预测正确为 1 ,错误为 0 。
之后利用 tf.reduce_mean() 函数将所有的correct_prediction 求平均值 ,比如测试 10 张图片 ,上述有 9 张正确(9个1),1 张错误(1个0)。则平均值为 0.9,就是预测精度了 。
那么利用以上网络和代码得到的结果是怎样的呢 ?下面给出结果 。

以上代码获取方式 :公号后台回复关键词【MNIST】即可获取 。

原文发布时间为:2018-08-04
本文来自云栖社区合作伙伴“小詹学Python”,了解相关信息可以关注“小詹学Python

相关文章
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4月前
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
242 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
4月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
85 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
4月前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
69 0
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
101 3
|
3月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
4月前
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
431 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
4月前
|
机器学习/深度学习 并行计算 PyTorch
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
798 1
深度学习环境搭建笔记(一):detectron2安装过程
|
4月前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
590 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
4月前
|
机器学习/深度学习 自然语言处理 并行计算
深度学习笔记(十四):Transormer知识总结
关于深度学习中Transformer模型的知识总结,涵盖了Self-attention机制、QKV、Multi-head attention、位置编码和并行运算等关键概念,以及如何在PyTorch中实现Self-attention。
81 1