Tensorflow中的多层感知器学习
在这篇文章中,我们将了解多层感知器的概念和它在Python中使用TensorFlow库的实现。
多层感知
多层感知也被称为MLP。它是完全连接的密集层,可以将任何输入维度转化为所需维度。多层感知是一个具有多层的神经网络。为了创建一个神经网络,我们将神经元结合在一起,使一些神经元的输出成为其他神经元的输入。
多层感知器有一个输入层,每个输入都有一个神经元(或节点),它有一个输出层,每个输出都有一个节点,它可以有任意数量的隐藏层,每个隐藏层可以有任意数量的节点。多层感知器(MLP)的原理图描述如下。
在上面的多层感知器图中,我们可以看到有三个输入,因此有三个输入节点,隐藏层有三个节点。输出层给出两个输出,因此有两个输出节点。输入层的节点接受输入并将其进一步处理,在上图中,输入层的节点将其输出转发给隐藏层的三个节点,以同样的方式,隐藏层处理信息并将其传递给输出层。
多层感知中的每个节点都使用一个sigmoid激活函数。sigmoid激活函数将实值作为输入,并使用sigmoid公式将其转换为0和1之间的数字。
现在我们已经完成了多层感知的理论部分,让我们继续使用TensorFlow库在python中实现一些代码。
一步一步实现
第1步:导入必要的库。
第2步:下载数据集。
TensorFlow允许我们读取MNIST数据集,我们可以在程序中直接加载它作为训练和测试数据集。
输出:
从https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz 下载数据
11493376/11490434 [==============================] – 2s 0us/step
第3步:现在我们将把像素转换为浮点值。
我们要把像素值转换成浮点值来进行预测。将数字改为灰度值将是有益的,因为数值变得很小,计算变得更容易和更快。由于像素值的范围是0到256,除了0以外,其他的范围是255。因此,将所有的值除以255,就可以转换为0到1的范围。
第4步:了解数据集的结构
输出:
因此,我们得到训练数据集中有60,000条记录,测试数据集中有10,000条记录,数据集中的每张图像都是28×28的大小。
第5步:将数据可视化。
输出
第6步:形成输入层、隐藏层和输出层。
一些需要注意的重要事项:。
- 顺序模型允许我们像在多层感知器中那样逐层创建模型,并且仅限于单输入、单输出的层叠。
- 平坦化对提供的输入进行平坦化,而不影响批处理的大小。例如,如果输入的形状是(batch_size,),没有特征轴,那么扁平化会增加一个额外的通道尺寸,输出的形状是(batch_size, 1)。
- 激活是为了使用sigmoid激活函数。
- 前两个密集层用来做一个全连接模型,是隐藏层。
- 最后一个密集层是输出层,包含10个神经元,决定图像属于哪个类别。
第7步:编译模型。
这里使用了编译函数,涉及到损失、优化器和度量的使用。这里使用的损失函数是sparse_categorical_crossentropy,优化器是adam。
第8步:拟合模型。
输出:
需要注意的一些要点。
- 纪元告诉我们,模型将被训练成前向和后向的次数。
- 批量大小代表样本的数量,如果没有指定,batch_size将默认为32。
- 模型将把这部分训练数据分离出来,在每个历时结束时评估损失和任何模型指标。(模型不会在此数据上进行训练)
第9步:查找模型的准确性。
输出:
通过对测试样本使用model.evaluate(),我们得到了我们的模型92%的准确性。