2.1 神经网络的第一次接触

让我们看一下神经网络的实例,这个神经网络使用了python库Keras来学习识别手写数字。除非你已经有了关于Keras或者相似的库的经验,你不会明白立刻明白第一个例子的所有东西。你可能还没有装Keras;这没关系,在下一章里,我们会回顾这个例子中的每一个元素,并详细的解释它们。所以如果看到一些看起来专业或者看上去就像是魔法的东西,你也不用担心!我们必须从某个地方开始。

这里我们想解决的问题是将手写数字的灰度图片分类呈10个种类(0到9)。我们使用MNIST数据集,机器学习社区的经典,它几乎与这一领域存在时间一样长并且被深入研究过。它是一套60000张训练图片加10000张练习图片,在1980年被国家技术与标准研究所(NIST)集成。你可以把“解决”MNIST当作深度学习的“hello world”——它是你如何检验你的算法如预期那样工作。当你变成机器学习的练习者时,你会在专业论文、博客文章等等,看到MNIST一遍又一遍的出现,你能在图2.1中看到一些MNIST的例子。

关于类和标签的注释

在机器学习中,分类任务中的一个种类代表一个类。数据点叫做样本。与特殊化的样本关联的类叫做标签。

你不需要现在就你的机器上重现这个例子。如果你希望这样,你需要先安装Keras,它在3.3中。

MNIST数据集预装入Keras中,以一套包含了4个Numpy数组的形式。

from keras.datasets import mnist

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

train_images和train_labels来自training set,是模型将要学习的数据。模型在之后将会在test set,test_images和test_labels上测试。

图片被编码成Numpy数组,并且标签是名称为数字0到9的数组。图片和标签有一对一的对应关系。

让我们看看训练数据:

(略)

工作流程如下:首先,我们喂给神经网络训练数据train_images和train_labels。网络在这之后将学习着将图片与标签联系起来。最后,我们将让网络产生对test_images的预测,并且检验这些预测与test_labels中的标签是否匹配。

让我们建立一个神经网络——再一次重申,记住你不需要要求自己能理解例子中的所有东西。

 (略)

神经网络的核心架构块是层,一个数据处理模型,你可以认为是数据过滤器,一些数据进来,然后以更有用的形式出去。更明确地说是层从给它们的数据中提取表示方式——希望,表示方式对于手中的问题更有意义。大多数包含一系列的样本层的深度学习会执行“数据蒸馏”的过程。一个深度学习模型就像是数据处理的筛子,由一个连续地持续增加提炼效果的数据过滤器组成,那就是层。

这里,我们的网络由两个连续的密集层组成,它紧密地连接着神经层(也叫做充分连接)。第二(也是最后的)层是10道softmax层,它意味着它将返回一组10个可能分数的数组(加起来等于1)。每个分数是当前属于我们10个数字类的数字图片的概率。

posted on 2019-05-06 15:27  z_zheng  阅读(124)  评论(0编辑  收藏  举报