返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么实现一个多层感知器神经网络
  • 726
分享到

Python中怎么实现一个多层感知器神经网络

2023-06-16 05:06:10 726人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python中怎么实现一个多层感知器神经网络,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。强大的库已经存在了,如:Tensorflow,PyTorch,Keras

这篇文章将为大家详细讲解有关python中怎么实现一个多层感知器神经网络,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

强大的库已经存在了,如:TensorflowPyTorch,Keras等等。我将介绍在Python中创建多层感知器(MLP)神经网络的基本知识。

感知器是神经网络的基本组成部分。感知器的输入函数是权重,偏差和输入数据的线性组合。具体来说:in_j = weight input +  bias.(in_j =权重输入+偏差)。在每个感知器上,我们都可以指定一个激活函数g。

激活函数是一种确保感知器“发射”或仅在达到一定输入水平后才激活的数学方法。常见的非线性激活函数为S型,softmax,整流线性单位(ReLU)或简单的tanH。

激活函数有很多选项,但是在本文中我们仅涉及Sigmoid和softmax。

图1:感知器

Python中怎么实现一个多层感知器神经网络

对于有监督的学习,我们稍后将输入的数据通过一系列隐藏层转发到输出层。这称为前向传播。在输出层,我们能够输出预测y。通过我们的预测y,我们可以计算误差|  y*-y | 并使误差通过神经网络向后传播。这称为反向传播。通过随机梯度下降(SGD)过程,将更新隐藏层中每个感知器的权重和偏差。

图2:神经网络的基本结构

Python中怎么实现一个多层感知器神经网络

现在我们已经介绍了基础知识,让我们实现一个神经网络。我们的神经网络的目标是对MNIST数据库中的手写数字进行分类。我将使用NumPy库进行基本矩阵计算。

在我们的问题中,MNIST数据由 [748,1] 矩阵中的8位颜色通道表示。从本质上讲,我们有一个 [748,1] 的数字矩阵,其始于[0,1,....  255],其中0表示白色,255表示黑色。

结果

MNIST手写数字数据库包含60,000个用于训练目的的手写示例和10,000个用于测试目的的示例。在对60,000个示例进行了30个epoch的训练之后,我在测试数据集上运行了经过训练的神经网络,并达到了93.2%的准确性。甚至可以通过调整超参数来进一步优化

Python中怎么实现一个多层感知器神经网络

它是如何工作的?

本文分为5个部分。这些部分是:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 激活函数

  3. 权重初始化

  4. 偏差初始化

  5. 训练算法

  6. 进行预测

1. 激活函数

Sigmoid是由等式1 /(1+ exp(-x))定义的激活函数,将在隐藏层感知器中使用。

Softmax是一个激活函数,当我们要将输入分为几类时,它通常在输出层中使用。在我们的例子中,我们希望将一个数字分成10个bucket[0,1,2,…,9]中的一个。它计算矩阵中每个条目的概率;概率将总计为1。具有最大概率的条目将对应于其预测,即0,1,…,9。Softmax定义为exp(x)/  sum(exp(x))。

图3:激活函数的实现

Python中怎么实现一个多层感知器神经网络

2. 权重初始化

对于我们的每个隐藏层,我们将需要初始化权重矩阵。有几种不同的方法可以做到这一点,这里是4。

零初始化-初始化所有权重= 0。

随机初始化-使用随机数初始化权重,而不是完全随机。我们通常使用标准正态分布(均值0和方差1)中的随机数。

Xavier初始化-使用具有设定方差的正态分布中的随机数初始化权重。我们将基于上一层的大小设置方差。

如上所述,进入感知器的边缘乘以权重矩阵。关键的一点是,矩阵的大小取决于当前图层的大小以及它之前的图层。明确地,权重矩阵的大小为[currentLayerSize,previousLayerSize]。

如上所述,进入感知器的边缘乘以权重矩阵。关键的一点是,矩阵的大小取决于当前图层的大小以及它之前的图层。明确地,权重矩阵的大小为[currentLayerSize,previousLayerSize]。

假设我们有一个包含100个节点的隐藏层。我们的输入层的大小为[748,1],而我们所需的输出层的大小为[10,1]。输入层和第一个隐藏层之间的权重矩阵的大小为[100,748]。隐藏层之间的每个权重矩阵的大小为[100,100]。最后,最终隐藏层和输出层之间的权重矩阵的大小为[10,100]。

出于教育目的,我们将坚持使用单个隐藏层;在最终模型中,我们将使用多层。

图4:权重初始化实现

Python中怎么实现一个多层感知器神经网络

3. 偏差初始化

像权重初始化一样,偏置矩阵的大小取决于图层大小,尤其是当前图层大小。偏置初始化的一种方法是将偏置设置为零。

对于我们的实现,我们将需要为每个隐藏层和输出层提供一个偏差。偏置矩阵的大小为[100,1],基于每个隐藏层100个节点,而输出层的大小为[10,1]。

图5:偏置初始化实现

Python中怎么实现一个多层感知器神经网络

4. 训练算法

前面已经说过,训练是基于随机梯度下降(SGD)的概念。在SGD中,我们一次只考虑一个训练点。

在我们的示例中,我们将在输出层使用softmax激活。将使用“交叉熵损失”公式来计算损失。对于SGD,我们将需要使用softmax来计算交叉熵损失的导数。也就是说,此导数减少为y  -y,即预测y减去期望值y。

图6:关于softmax激活的交叉熵损失及其导数

Python中怎么实现一个多层感知器神经网络

我们还需要编写S型激活函数的导数。在图7中,我定义了S型函数及其衍生函数

图7:Sigmoid函数(上)及其导数(下)

Python中怎么实现一个多层感知器神经网络

通常,神经网络将允许用户指定几个“超参数”。在我们的实施中,我们将着重于允许用户指定epoch,批处理大小,学习率和动量。还有其他优化技术!

  • 学习率(LR):学习率是一个参数,用户可以通过它指定网络允许我们学习和更新其参数的速度。选择一个好的学习率是一门艺术。如果LR太高,我们可能永远不会收敛于良好的可接受的训练错误。如果LR太低,我们可能会浪费大量的计算时间。

  • epoch:epoch是整个训练集中的一个迭代。为了确保我们不会过度拟合早期样本中的数据,我们会在每个时期之后对数据进行随机排序

  • 批次大小:通过Epoc2h的每次迭代,我们将分批训练数据。对于批次中的每个训练点,我们将收集梯度,并在批次完成后更新权重/偏差。

  • 动量:这是一个参数,我们将通过收集过去的梯度的移动平均值并允许在该方向上的运动来加速学习。在大多数情况下,这将导致更快的收敛。典型值范围从0.5到0.9。

下面,我编写了一些通用的伪代码来模拟反向传播学习算法的概况。为了便于阅读,已将诸如计算输出和将训练数据分成批次之类的任务作为注释编写。

Python中怎么实现一个多层感知器神经网络

现在,我们将展示伪代码的实现.

Python中怎么实现一个多层感知器神经网络

5. 做出预测

现在,我们仅缺少此实现的一个关键方面。预测算法。在编写反向传播算法的过程中,我们已经完成了大部分工作。我们只需要使用相同的前向传播代码即可进行预测。输出层的softmax激活函数将计算大小为[10,1]的矩阵中每个条目的概率。

我们的目标是将数字分类为0到9。因此,aj2矩阵的索引将与预测相对应。概率最大的索引将由np.argmax()选择,并将作为我们的预测。


关于Python中怎么实现一个多层感知器神经网络就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Python中怎么实现一个多层感知器神经网络

本文链接: https://lsjlt.com/news/282465.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中怎么实现一个多层感知器神经网络
    这篇文章将为大家详细讲解有关Python中怎么实现一个多层感知器神经网络,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。强大的库已经存在了,如:TensorFlow,PyTorch,Keras...
    99+
    2023-06-16
  • pytorch神经网络从零开始实现多层感知机
    目录初始化模型参数激活函数模型损失函数训练我们已经在数学上描述了多层感知机,现在让我们尝试自己实现一个多层感知机。为了与我们之前使用softmax回归获得的结果进行比较,我们将继续使...
    99+
    2024-04-02
  • Python深度学习pytorch神经网络多层感知机简洁实现
    我们可以通过高级API更简洁地实现多层感知机。 import torch from torch import nn from d2l import torch as d2l ...
    99+
    2024-04-02
  • TensorFlow神经网络创建多层感知机MNIST数据集
    前面使用TensorFlow实现一个完整的Softmax Regression,并在MNIST数据及上取得了约92%的正确率。 前文传送门: TensorFlow教程Softmax逻...
    99+
    2024-04-02
  • 多层感知机(MLP)、全连接神经网络(FCNN)、前馈神经网络(FNN)、深度神经网络(DNN)与BP算法详解
    本篇文章涉及较多的基础知识,并且篇幅较长,是其它的更为复杂的神经网络的基础,需要重点掌握该神经网络的结构特征、网络的训练方法等内容。 一:概念辨析 兔兔在命名标题时,使用了这么多的名称,主要是因为这些名称,从本质上来讲几乎都是指相同的神经网...
    99+
    2023-10-24
    神经网络 深度学习 python
  • Python中怎么实现一个感知器
    这篇文章将为大家详细讲解有关Python中怎么实现一个感知器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是感知器生物神经元示意图感知器的概念类似于大脑基本处理单元神经元的工作原理。神经...
    99+
    2023-06-15
  • Python 实现一个全连接的神经网络
    目录前言梯度前向传播反向传播开始训练前言 在这篇文章中,准备用 Python 从头开始实现一个全连接的神经网络。你可能会问,为什么需要自己实现,有很多库和框架可以为我们做这件事,比如...
    99+
    2024-04-02
  • TensorFlow神经网络创建多层感知机MNIST数据集的方法是什么
    这篇文章主要讲解了“TensorFlow神经网络创建多层感知机MNIST数据集的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TensorFlow神经网络创建多层感知机MNIST数...
    99+
    2023-06-25
  • Python底层技术解析:如何实现神经网络
    Python底层技术解析:如何实现神经网络,需要具体代码示例在现代人工智能领域中,神经网络是最为常用和重要的技术之一。它模拟人脑的工作原理,通过多层神经元的连接来实现复杂的任务。Python作为一门功能强大且易于使用的编程语言,为实现神经网...
    99+
    2023-11-08
    神经网络 Python 底层技术
  • Keras中怎么创建一个神经网络模型
    在Keras中创建神经网络模型通常包括以下步骤: 1.导入必要的库: import tensorflow as tf from te...
    99+
    2024-03-14
    Keras
  • pytorch怎么实现bp神经网络
    要在PyTorch中实现一个BP神经网络,需要遵循以下步骤: 定义神经网络结构:首先,需要定义神经网络的结构,包括输入层、隐藏层和...
    99+
    2024-04-08
    pytorch
  • Python实现一个简单三层神经网络的搭建及测试 代码解析
    目录1.初始化2.预测3.训练4.测试 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层。本文所构建的神经网络隐藏层只有一层。一个神...
    99+
    2024-04-02
  • Python中怎么实现一个感知器分类算法
    Python中怎么实现一个感知器分类算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。感知器算法Perceptron算法是两类(二进制)分类机器学习算法。它是一种神经网络模...
    99+
    2023-06-15
  • Lasagne中怎么实现卷积神经网络
    Lasagne是一个轻量级的神经网络库,可以很容易地实现卷积神经网络。 以下是一个简单的示例,展示如何在Lasagne中实现一个简单...
    99+
    2024-04-02
  • 基于Tensorflow搭建一个神经网络的实现
    一、Tensorlow结构 import tensorflow as tf import numpy as np #创建数据 x_data = np.random.rand(...
    99+
    2024-04-02
  • Python中如何实现卷积神经网络
    这篇文章主要介绍了Python中如何实现卷积神经网络,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、卷积神经网络Yann LeCun 和Yoshua Bengio在1995...
    99+
    2023-06-15
  • 卷积神经网络CharCNN实现中文情感分类任务
    目录中文情感分类CharCNN的基本原理CharCNN在中文情感分类中的应用总结中文情感分类 CharCNN是一种卷积神经网络(CNN)结构,输入为字符级别的文本数据,并采用卷积加池...
    99+
    2023-05-17
    CharCNN中文情感分类 卷积神经网络 CharCNN
  • Python利用numpy实现三层神经网络的示例代码
    本文主要介绍了Python利用numpy实现三层神经网络的示例代码,分享给大家,具体如下: 其实神经网络很好实现,稍微有点基础的基本都可以实现出来.主要都是利用上面这个公式来做的...
    99+
    2024-04-02
  • matlab神经网络算法怎么实现
    在MATLAB中,可以使用神经网络工具箱来实现神经网络算法。以下是一个简单的例子,展示了如何使用MATLAB实现一个简单的前馈神经网...
    99+
    2023-10-12
    matlab
  • PyTorch中的卷积神经网络怎么实现
    在PyTorch中,可以使用torch.nn模块中的Conv2d类来实现卷积神经网络。以下是一个简单的示例,展示如何在PyTorch...
    99+
    2024-03-05
    PyTorch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作