Tensorflow中的多层感知器学习


在这篇文章中,我们将了解多层感知器的概念和它在Python中使用TensorFlow库的实现。

多层感知

多层感知也被称为MLP。它是完全连接的密集层,可以将任何输入维度转化为所需维度。多层感知是一个具有多层的神经网络。为了创建一个神经网络,我们将神经元结合在一起,使一些神经元的输出成为其他神经元的输入。

多层感知器有一个输入层,每个输入都有一个神经元(或节点),它有一个输出层,每个输出都有一个节点,它可以有任意数量的隐藏层,每个隐藏层可以有任意数量的节点。多层感知器(MLP)的原理图描述如下。

在上面的多层感知器图中,我们可以看到有三个输入,因此有三个输入节点,隐藏层有三个节点。输出层给出两个输出,因此有两个输出节点。输入层的节点接受输入并将其进一步处理,在上图中,输入层的节点将其输出转发给隐藏层的三个节点,以同样的方式,隐藏层处理信息并将其传递给输出层。

多层感知中的每个节点都使用一个sigmoid激活函数。sigmoid激活函数将实值作为输入,并使用sigmoid公式将其转换为0和1之间的数字。

现在我们已经完成了多层感知的理论部分,让我们继续使用TensorFlow库在python中实现一些代码。

一步一步实现

第1步:导入必要的库。

# importing modules
import tensorflow as tf
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Activation
import matplotlib.pyplot as plt

第2步:下载数据集。

TensorFlow允许我们读取MNIST数据集,我们可以在程序中直接加载它作为训练和测试数据集。

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

输出:

从https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz 下载数据

11493376/11490434 [==============================] – 2s 0us/step

第3步:现在我们将把像素转换为浮点值。

# Cast the records into float values
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')# normalize image pixel values by dividing
# by 255
gray_scale = 255
x_train /= gray_scale
x_test /= gray_scale

我们要把像素值转换成浮点值来进行预测。将数字改为灰度值将是有益的,因为数值变得很小,计算变得更容易和更快。由于像素值的范围是0到256,除了0以外,其他的范围是255。因此,将所有的值除以255,就可以转换为0到1的范围。

第4步:了解数据集的结构

print("Feature matrix:", x_train.shape)
print("Target matrix:", x_test.shape)
print("Feature matrix:", y_train.shape)
print("Target matrix:", y_test.shape)

输出:

Feature matrix: (60000, 28, 28)
Target matrix: (10000, 28, 28)
Feature matrix: (60000,)
Target matrix: (10000,)

因此,我们得到训练数据集中有60,000条记录,测试数据集中有10,000条记录,数据集中的每张图像都是28×28的大小。

第5步:将数据可视化。

fig, ax = plt.subplots(10, 10)
k = 0
for i in range(10):for j in range(10):ax[i][j].imshow(x_train[k].reshape(28, 28), aspect='auto')k += 1
plt.show()

输出

第6步:形成输入层、隐藏层和输出层。

model = Sequential([# reshape 28 row * 28 column data to 28*28 rowsFlatten(input_shape=(28, 28)),# dense layer 1Dense(256, activation='sigmoid'),  # dense layer 2Dense(128, activation='sigmoid'), # output layerDense(10, activation='sigmoid'),
])

一些需要注意的重要事项:

  • 顺序模型允许我们像在多层感知器中那样逐层创建模型,并且仅限于单输入、单输出的层叠。
  • 平坦化对提供的输入进行平坦化,而不影响批处理的大小。例如,如果输入的形状是(batch_size,),没有特征轴,那么扁平化会增加一个额外的通道尺寸,输出的形状是(batch_size, 1)。
  • 激活是为了使用sigmoid激活函数。
  • 前两个密集层用来做一个全连接模型,是隐藏层。
  • 最后一个密集层是输出层,包含10个神经元,决定图像属于哪个类别。

第7步:编译模型。

model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

这里使用了编译函数,涉及到损失、优化器和度量的使用。这里使用的损失函数是sparse_categorical_crossentropy,优化器是adam

第8步:拟合模型。

model.fit(x_train, y_train, epochs=10, batch_size=2000, validation_split=0.2)

输出:

需要注意的一些要点。

  • 纪元告诉我们,模型将被训练成前向和后向的次数。
  • 批量大小代表样本的数量,如果没有指定,batch_size将默认为32。
  • 模型将把这部分训练数据分离出来,在每个历时结束时评估损失和任何模型指标。(模型不会在此数据上进行训练)

第9步:查找模型的准确性。

results = model.evaluate(x_test,  y_test, verbose = 0)
print('test loss, test acc:', results)

输出:

test loss, test acc: [0.27210235595703125, 0.9223999977111816]

通过对测试样本使用model.evaluate(),我们得到了我们的模型92%的准确性。

Tensorflow中的多层感知器学习相关推荐

  1. 用Python实现多层感知器神经网络

    作者|Vivek Patel 编译|Flin 来源|towardsdatascience 除非你能学习到一些东西,否则不要重复造轮子. 强大的库已经存在了,如:TensorFlow,PyTorch,K ...

  2. 深度学习02-神经网络(MLP多层感知器)

    文章目录 神经网络 简介 学习路径 分类 多层感知器(MLP) 神经网络认识 两层神经网络 输入层 从输入层到隐藏层 从隐藏层到输出层 激活层 输出的正规化 如何衡量输出的好坏 反向传播与参数优化 过 ...

  3. 【深度学习BookNote】多层感知器(multi-layer perceptron)

    多层感知器(multi-layer perceptron) 神经网络的变种目前有很多,如误差反向传播(Back Propagation,BP)神经网路.概率神经网络.卷积神经网络(Convolutio ...

  4. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  5. TensorFlow 多层感知器

    本文主要介绍使用TensorFlow对多层感知器(MLP)进行编程,其他内容参考:TensorFlow 学习目录. 目录 一.多层感知器MLP 一.多层感知器MLP 多层感知器不同于CNN,CNN提取 ...

  6. 深度学习(一)多层感知器MLP/人工神经网络ANN

    目录 一.定义和公式 1. 多层感知器 Multi Layer Perceptron MLP 2. MLP实现非线性分类 3. Keras介绍 二. 代码实战 1. 建立MLP模型实现二分类 1.1  ...

  7. 深度学习笔记--多层感知器以及BP算法

    简介 多层感知器,是指包含1个或多个隐层的前馈神经网络. 前馈神经网络的特点: 第0层为输入层,最后一层为输出层,中间层为隐层. 整个网络无反馈,信号从输入层向输出层单向传播,整个网络为有向无环图. ...

  8. 【深度学习】学习案例:Keras 多层感知器手写数字识别

    实验:Keras 多层感知器 手写数字识别 1. 下载 MNIST数据集(前提) 2. 进行数据预处理 3. 建立模型 4. 进行训练 5. 以测试数据评估模型 6. 进行预测 拓展: 1. 显示混淆 ...

  9. 深度学习之多层感知器及激活函数

    目录 一.多层感知机MLP 1.1定义 二.MLP实现非线性分类 2.1MLP实现与门 2.2MLP实现非与门 2.3MLP实现或门 2.4MLP实现同或门 三.MLP实现多分类 四.激活函数 4.1 ...

最新文章

  1. log4j配置文件详解
  2. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
  3. 如何在国内跑Kubernetes的minikube
  4. 前端学习(607):javascript导读
  5. 10.6-全栈Java笔记:常见流详解(四)
  6. 为什么说java语言是支持跨平台的
  7. 代理模式 委派模式 策略模式_设计模式 - 委派模式
  8. 运动目标跟踪(十)--CSK跟踪
  9. Kubernetes 小白学习笔记(11)--搭建一个kubernetes集群-为worker节点配置命令行交互环境
  10. Android 经典系统 HTC One 802d国行电信专版/最新Viper2.6.0/永久root/强大的功能、高级设置/纯净省电ROM
  11. c++ protobuf中repeated类型使用——序列化
  12. 红米NOTE3 双网通(2015617)刷机包 解账户锁
  13. 虚拟机安装debian
  14. 深度优先与广度优先的区别!
  15. java 分布式介绍
  16. 实时日志监控系统-全览
  17. 计算机专业以后可以学画画吗,计算机影视制作专业需要学画画吗
  18. 【TestDirector】常见问题分析
  19. Logistic Regression - Decision boundary
  20. 读《一本小小的蓝色逻辑书》:识别常见的逻辑漏洞

热门文章

  1. 一、采样频率到底是选择2倍还是10倍?让我用python来给你展示
  2. 浏览器调用桌面程序方法
  3. MFC链表CList类
  4. 清华计算机考研复试机试,请问清华考研计算机复试考什么
  5. IDEA中如何打包为jar包
  6. 一篇不错的关于VSS的入门介绍
  7. android 使用iphone线控耳机,耳机 篇一:关于安卓手机怎么用苹果专用耳机的问题...
  8. Ruff Chain 荣获”2018年度最具发展潜力项目“奖
  9. 电脑强制删除顽固文件
  10. (区块链溯源)基于Hyperledger Fabric 区块链的产品溯源( 化妆品 )