赞
踩
本章节的阅读对象是对机器学习和 TensorFlow 都不太了解的新手.
就像我们学习编程的第一步往往是学习敲出 "Hello World" 一样,机器学习的入门就要知道 MNIST.
MNIST 是一个入门级的计算机视觉数据集,它包含各种手写数字图片:
它也包含每一张图片对应的标签,告诉我们这个是数字几;比如,上面这四张图片的标签分别是 5, 0, 4, 1。
在此教程中,我们将训练一个机器学习模型用于预测图片里面的数字.
我们的目的不是要设计一个世界一流的复杂模型 —— 尽管我们会在之后给你源代码去实现一流的预测模型 —— 而是要介绍下如何使用 TensorFlow 所以,我们这里会从一个很简单的数学模型开始,它叫做 Softmax Regression.
对应这个教程的实现代码很短,而且真正有意思的内容只包含在三行代码里面.但是,去理解包含在这些代码里面的设计思想是非常重要的:TensorFlow 工作流程和机器学习的基本概念.因此,这个教程会很详细地介绍这些代码的实现原理.
MNIST 数据集
MNIST 数据集的官网是 Yann LeCun's website 在这里,我们提供了一份 python 源代码用于自动下载和安装这个数据集.你可以下载 这份代码,然后用下面的代码导入到你的项目里面,也可以直接复制粘贴到你的代码文件里面.import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
下载下来的数据集被分成两部分:60000 行的训练数据集 (mnist.train) 和 10000 行的测试数据集 (mnist.test) 这样的切分很重要,在机器学习模型设计时必须有一个单独的测试数据集不用于训练而是用来评估这个模型的性能,从而更加容易把设计的模型推广到其他数据集上(泛化).
正如前面提到的一样,每一个 MNIST 数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签我们把这些图片设为“xs”,把这些标签设为“ys”.训练数据集和测试数据集都包含 xs 和 ys, 比如训练数据集的图片是 mnist.train.images ,训练数据集的标签是 mnist.train.labels.
每一张图片包含 28 像素 X28 像素.我们可以用一个数字数组来表示这张图片:
我们把这个数组展开成一个向量,长度是 28 x 28 = 784.如何展开这个数组(数字间的顺序)不重要,只要保持各个图片采用相同的方式展开.从这个角度来看, MNIST 数据集的图片就是在 784 维向量空间里面的点, 并且拥有比较 复杂的结构 (提醒: 此类数据的可视化是计算密集型的).
展平图片的数字数组会丢失图片的二维结构信息.这显然是不理想的,最优秀的计算机视觉方法会挖掘并利用这些结构信息,我们会在后续教程中介绍.但是在这个教程中我们忽略这些结构,所介绍的简单数学模型, softmax 回归 (softmax regression), 不会利用这些结构信息.
因此,在 MNIST 训练数据集中,mnist.train.images 是一个形状为 [60000, 784] 的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点.在此张量里的每一个元素, 都表示某张图片里的某个像素的强度值,值介于 0 和 1 之间.
相对应的 MNIST 数据集的标签是介于 0 到 9 的数字,用来描述给定图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。