首页 > 其他分享 >跟姥爷深度学习4 从数学计算看神经网络

跟姥爷深度学习4 从数学计算看神经网络

时间:2023-04-21 23:15:28浏览次数:29  
标签:预测 我们 神经网络 姥爷 计算 np 数学计算 array

一、前言

我们前面简单的做了一个气温预测,经过反复调试,效果还不错。实际上在这个方向上我们还可以更进一步优化,但因为我们是学习嘛,主要还是看广度而不是深度。考虑到后面要开始学习卷积网络,我们必须把更基础的内容搞明白才行,比如神经网络到底是如何工作的,如果不搞明白后面卷积就只能说用法而不明白原因了。所以本篇我们从数学计算的角度来解读神经网络,方法是像前一篇那样构建一个最简单的网络,处理最简单的问题,然后手写一个“预测”函数,将整个预测的计算结果细化出来,并与TensorFlow预测结果进行比对。

二、最简单的神经网络

假设现在有输入X=[1,2,3],对应的Y=[2,5,6]。构建最简单的网络来训练。

三、神经网络的权重参数

我们可以通过model.get_layer(index=n)来获取神经网络的任意一层,接着用layer.get_weights()获取到“权重参数”。

 

如上图所示,我们训练后神经网络的权重参数如下:

w1 = np.array([[-2.310902]])

b1 = np.array([3.1731462])

 

w2 = np.array([[-2.2987313,  1.0480149, -4.3541355]])

b2 = np.array([ 0.21061553, -0.03892312,  1.3173497 ])

 

w3 = np.array([[ 1.936089 ],[-0.9680107],[ 5.0862694]])

b3 = np.array([1.5100651])

 

可以说权重参数就是神经网络本身,所谓训练就是将权重参数从无序混乱的数字,“训练”成上面这样的看起来似乎还是挺乱的数据。但是我们可以直接拿来用,自己计算一下就明白了。

四、手写预测部分

神经网络的基本组成是“预测、损失计算、反向传播”,中间可能穿插激活函数、正则化等等。所谓预测其实就是基于权重参数进行一次矩阵计算,所谓损失计算就是用预测的结果与正确值进行比较,反向传播则是在损失的基础上对权重参数进行优化。这里我们自己手写一下预测部分,对原理感兴趣的可以翻翻我2019年写的神经元解析部分。

具体代码如下:

 

在上面的代码中,我们模拟构建了3层网络(1:3:1),每一层所谓网络实际就是一次np.dot()的计算,也就是矩阵的乘积。我们再看下神经网络的公式:

Y = F(X)+b

现在可以得知Dense(全连接)神经网络的公式就是:

Y = F(X)+b = np.dot(X, W)+b

另外需要注意的是激活函数sigmoid,在前面用TensorFlow构建网络时,我们使用了:

model1.add(layers.Dense(1,activation='sigmoid'))

model1.add(layers.Dense(3,activation='sigmoid'))

model1.add(layers.Dense(1))

所以这里在对Y进行计算后,需要再过一次激活函数。

最后我们再看下计算的结果,发现是一模一样对吧,所以我们手写的是对的。

五、计算过程

自己手写的代码,好处就是我们可以拆解的很细,这里我们将每一步的计算结果都输出来。

 

为方便理解我们在excel里整理下:

 

接下来,我们按神经网络的计算规则,从头到尾计算一遍。

 

1、第一层计算

 

2、第二层计算

 

3、第三层计算

 

六、回顾

本篇我们在前面知识的基础上,对神经网络的计算原理进行了验证,结果还不错。而且还分别使用TensorFlow框架、原生python代码、数值计算进行了相互印证。

实际上所谓的深度学习和神经网络就是像前面我们演示的那要,是各种矩阵的计算。而神经网络本身也是由w和b组成的数字矩阵。但就是这样的简单计算最终实现了非常神奇的功能。不得不感叹,大道至简啊。

基于此,我想到,其实训练可能比较复杂,但训练好后的模型使用还是非常简单的,所以我们可以脱离TensorFlow的框架,在任意平台来应用训练好的模型,也可以针对性的对大矩阵的计算进行优化。

 

标签:预测,我们,神经网络,姥爷,计算,np,数学计算,array
From: https://www.cnblogs.com/cation/p/17342126.html

相关文章

  • 使用GPU训练神经网络的历史
    我在一台没有GPU支持的Mac电脑本上本地部署了stable-diffusion-webui,并生成了一张图。这张图大概需要10分钟的时间才能生成,但如果有GPU支持的话,只需要几秒钟就能完成。这让我深刻体会到GPU的算力比CPU强大得多。GPU算力为啥远高于CPU更多的处理单元GPU在同样芯片面积上集成的处......
  • 图像识别技术原理和神经网络的图像识别技术
    图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展,人类对图像识别技术的认识越来越深刻。图像识别技术的过程分为信息的获取、预处理、特征抽取和选择、分类器设计和分类决策。简单分析了图像识别技术的引入、其......
  • 为什么神经网络具有泛化能力?
    神经网络神经网络(ArtificialNeuralNetworks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。它是一种基于计算机科学、数学和心理学等多学科的交叉学科,旨在模拟人脑的结构和功能,解决复杂的实际问题。神经网络通常由多个层次组成,每个层次由多个节......
  • 基于FNN模糊神经网络的控制器解耦控制matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要系统的复杂性与所要求的精确性之间存在尖锐矛盾,为此,通过模拟人类学习和自适应能力,人们提出了智能控制的思想。控制理论专家Austrom(1991)在IFAC大会上指出:模糊逻辑控制、神经网络与专家控制是三种典型的智能控制......
  • 基于FNN模糊神经网络的控制器解耦控制matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下: 2.算法涉及理论知识概要       系统的复杂性与所要求的精确性之间存在尖锐矛盾,为此,通过模拟人类学习和自适应能力,人们提出了智能控制的思想。控制理论专家Austrom(1991)在IFAC大会上指出:模糊逻辑控制、神经网络与专家控制是......
  • 基于神经网络的自适应PID控制器 通过将RBF(BP)神经网络和PID控制器相结合
    基于神经网络的自适应PID控制器通过将RBF(BP)神经网络和PID控制器相结合,建立了神经网络PID控制器,采用传递函数进行系统建模,通过自动调整PID参数,实现了对方波信号的跟踪。程序有注释YID:5650652300828715......
  • 如何通过人工神经网络实现图像识别?
    ​如何通过人工神经网络实现图像识别?图像识别是指让计算机能够自动地识别图像中的物体、场景或者特征的技术。人工神经网络是一种模仿生物神经系统的结构和功能的数学模型,它由大量的简单处理单元(神经元)相互连接而成,能够通过学习从数据中提取复杂的特征和规律。人工神经网络实现......
  • 机器学习算法终极对比:树模型VS神经网络
    树模型和神经网络,像一枚硬币的两面。在某些情况下,树模型的性能甚至优于神经网络。由于神经网络的复杂性,它们常常被认为是解决所有机器学习问题的「圣杯」。而另一方面,基于树的方法并未得到同等重视,主要原因在于这类算法看起来很简单。然而,这两种算法看似不同,却像一枚硬币的正反......
  • 3.线性神经网络
    线性模型当我们的输入包含d个特征时,我们将预测结果表示为:向量化:矩阵化:损失函数平方误差损失函数:在n个样本上度量:最优化:解析解:随机梯度下降:矢量化加速importmathimporttimeimportnumpyasnpimporttensorflowastfimportmatplotlib.pyplotaspl......
  • TensorFlow 卷积神经网络实用指南:1~5
    原文:Hands-OnConvolutionalNeuralNetworkswithTensorFlow协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c一、TensorFlow的设置和介绍T......