人工智能TensorFlow(十四)MINIST手写数字识别

MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片:

MNIST

每张图片还额外有一个标签记录了图片上数字是几,例如上面几张图的标签就是:5、0、4、1。

MINIST数据

MINIST的数据分为2个部分:55000份训练数据(mnist.train)和10000份测试数据(mnist.test)。这个划分有重要的象征意义,他展示了在机器学习中如何使用数据。在训练的过程中,我们必须单独保留一份没有用于机器训练的数据作为验证的数据,这才能确保训练的结果的可行性。

前面已经提到,每一份MINIST数据都由图片以及标签组成。我们将图片命名为“x”,将标记数字的标签命名为“y”。训练数据集和测试数据集都是同样的结构,例如:训练的图片名为 mnist.train.images 而训练的标签名为 mnist.train.labels。

每一个图片均为28×28像素,我们可以将其理解为一个二维数组的结构:

数据1 :28*28矩阵点

mnist.train.images 是一个形态为 [55000, 784] 的张量(tensor 55000份训练数据)。第一个维度表示图片个数的索引,第二个维度表示图片中每一个像素的索引。每一个像素的取值为0或1,表示该像素的亮度。 mnist.train.images 可以理解为下图这样的空间结构:

MNIST的每一张图片都有一个数值0~9的标记。我们将标签数据设置为“flag vectors”。“flag vectors”是指一个向量只有一个维度的数据是1,其他维度的数据都是0。在本文例子中,标记数据的维度将设置为1,而其他维度设置为0。例如5的向量结构是[0,0,0,0,0,5,0,0,0,0]。所以 mnist.train.labels 是一个结构为 [55000, 10] 的张量。

Softmax回归

MNIST中每一张图片表示一个手写体0到9的数字,所以每一张图片所要表达的内容只有10种可能性。我们希望得到图片代表某个数字的概率。举个例子,一个模型当图片上的手写体数字是9时有80%的可能性识别的结果是9,还有5%的可能性识别出的结果是8。因这2者并没有覆盖100%的可能性,所有还有其他数字可能会出现。这是一个典型的softmax回归案例。softmax回归的作用是可以将概率分配给几个不同的对象,softmax提供了一个值处于0到1之间的列表,而列表中的值加起来为1。

一个softmax回归包含2步:首先根据输入的数据提取该输入属于各个分类的“证据”(evidence),然后将这个证据转换成一个概率值。

下图形象的展示了softmax回归的过程。Xj表示一个像素点(下图中j=[1,2,3])。然后通过像素点与权重Wij的乘积求和(下图中i=[1,2,3])再加上偏移量bi得到模型值,最后将模型进行softmax运算。

softmax

矩阵表示:

softmax矩阵

所以softmax回归总结为y=softmax(Wx+b)

下期分享

以上就是mnist手写数字识别的基本原理,下期我们使用TensorFlow来了解一下我们讲述的CNN 与mnist手写数字识别的过程。

谢谢大家的点赞与转发,关于分享的文章,大家有任何问题,可以在评论区一起探讨学习!!!