全连神经网络的经典实践——MNIST数据集

通过前面的学习,想必大家已经对全连接的神经网络有一定的了解了,接下来我们将要动手实现一个简单而又经典的入门案例——MNIST手写数字识别。MNIST(Mixed National Institute of Standards and Technology database )手写体数字识别是一个经典案例,堪称深度学习界的“Hello World任务”,通过完成这个简单的任务来全面贯通之前所学过的深层全连神经网络的相关知识。在本小节中,我们先介绍一下MNIST数据集的内容以及获取方法。

MNIST 是一个非常简单的手写体数字识别数据集,由70000张 28×28 像素的黑白图片组成,每一个像素点都有一个取值为0~255的灰度值。每一张图片都写有 0~9 中的一个数字,我们的任务就是根据图片上的数字对这些图片进行 10 分类。图1展示了这个数据集中的一些样例图片。

在进行神经网络的设计前,我们需要先获取到MNIST的数据集。我们可以直接从网站(http://yann.lecun.com/exdb/mnist)中下载到数据集。为了方便,tensorflow已经封装了处理MNIST数据集的相关方法。我们需要使用的是tensorflow/examples/tu torials/mnist下的input_data.py文件,里面包含的read_data_sets()函数能读取指定路径的mnist数据集,若该路径下未检测到数据集,则会自动从上述网站中获取相应数据集。输入以下代码加载MNIST数据集:

其中第一个参数是train_dir,即MNIST数据集的存放路径,第二个参数是one_hot指定是否将样本图片对应到标注信息,函数返回的是一个MNIST数据集的类。上述代码的输出结果如下:

这里包含了4个.gz文件,分别对应如下:

其中训练集包含60000张图片,测试集包含10000张图片。为了验证模型训练的效果,一般会从训练数据中划分出一部分数据作为验证集 (validation set)。input_data_sets函数则从训练集中划分出5000张图片作为验证集。我们可以接着输入以下代码查看MNIST类中存放的数据集的维度信息:

从输出结果可以看出训练集包含55000张图片,验证集包含5000张图片,测试集包含10000张图片,每张图片是一个784维的向量(由28×28维的大小reshape成了一个784维的向量,方便输入到神经网络中进行处理)。每个答案(label)则包含一个10维的向量,分别对应0~9,比如(1,0,0,0,0,0,0,0,0,0)代表数字0,(0,1,0,0,0,0,0,0,0,0)代表数字1,(0,0,0,0,0,1,0,0,0,0)代表数字5。我们可以输出第一张图片的信息看看,输入以下代码。 第一张图片的信息是一个784维的向量,所有的像素值被归一化到0~1之间,代表原本的0~255的像素值,从label可以看出第一张图片的答案是“7”。

今天的内容就介绍到这里了,有兴趣的童鞋可以去网站上下载MNIST数据集尝试一下代码尝试一下,希望大家能掌握一点小知识~

关注小鲸融创,一起深度学习金融科技!


https://www.jianshu.com/p/987a47f9196f

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论