目录
一、mnist数据集
在机器学习神经网络领域,对于不想过多了解底层原理的初学者而言,其实有一个应用层面一般意义上的经典“Hello World”:手写体识别
,因为其场景和问题都很简单明确,更有经典的数据集mnist成为了众多入门者必备的实践项目。
mnist的数据集的图片采用的是28*28的灰度图。灰度图显示图像的原理是这样的,一行有28个像素点,一共有28行,每一个像素用一个字节的无符号数表示它的等级,如果是0,那就是最暗纯黑色,如果是一个字节的最大值255,那么就是最亮纯白色,如果是中间的值,那就是介于两者之间的灰色。
如果用键盘输入这些数字图像,精确的计算机在显示同一个字符的时候,每一次每个像素点的灰度值都是一样的。但人毕竟不同于精准但呆板的计算机。比如我们拿一支手写笔,在这个28*28的屏幕上手写数字五,每一次写得都不太一样。这时候也就没有什么确定的规则去根据这些像素的灰度值判断是什么数字了。
换句话说,这不再是一个适用于计算机机械逻辑做判断的问题,我们需要用有一定容错能力的系统来做这件事情。很明显,神经网络是一个很好的选择。我们已经知道如何搭建一个神经网络,那现在唯一的问题是如何把这些图片送入其中?神经网络的输入是一个多维的向量,或者说一个数组,而图片是一个方形的像素灰度值的集合。没错,我们把这些像素从头到尾一行一行的依次拉出来就好。
mnist的数据集每张图片的尺寸是28*28,所以这将拉出784个像素,我们把mnist数据集(手写图片数据)以784维向量作为输入,依次送入神经网络进行训练就好。
二、训练集和测试集
在机器学习的工作流程中,我们在训练时使用的数据集称之为训练集。当然,我们希望在训练集上的准确率很高,这意味着模型拟合的效果很棒。当我们会在训练之后,在训练级数据之外拿一些新的数据进行预测,看看这些新的数据在模型上的准确率如何。这些用来测试的样本数据称之为测试集,我们希望在测试集上的准确率也很高。实际上,我们在考量一个模型好坏的时候,更倾向于它在测试集上的表现,因为在测试集上那高准确率意味着模型在遇到训练中没有遇到过的新问题时,也能很准确的进行应测,换句话说,这个模型有足够的泛化能力。
模型在训练集和测试集上的不同表现导致了机器学习中三种常见的现象:
1.训练集准确率很低,这个模型多半是废了,这个现象称为欠拟合,可能模型过于简单
2.训练集准确率高,测试集准确率也很高,说明该模型拥有很好的泛化能力 ,有能力去解决新的问题。
3.训练集很高,测试集准确率出现明显