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

news2024/11/16 15:43:11

一、前言

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打印流,Properties类

打印流只有输出流,没有输入流 package com.hspedu.printstream;import java.io.IOException; import java.io.PrintStream;/*** author 韩顺平* version 1.0* 演示PrintStream (字节打印流/输出流)*/ public class PrintStream_ {public stat…

网络安全-网站漏洞扫描器

网络安全-网站漏洞扫描器 网站漏洞扫描器是用来扫描对方网站可能存在哪些漏洞的工具,我们可以借助网站漏洞扫描器来当作辅助作用去检测对方网站的漏洞。下面我们来介绍一款常用、好用的漏洞扫描器–AWVS。 AWVS 先说缺点-这玩意简称漏扫,你一旦发送&a…

IPSEC相关知识点

1.什么是数据认证,有什么作用,有哪些实现的技术手段? 数字认证证书它是以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的安全性、完整性。 使用了数字证书,即使您发送的…

(PCB系列七)PCB差分信号布线及其要点

1、差分信号的定义 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差…

不要老盯着ChatGPT,这几家公司的产品同样不容小觑

Adept.ai 2022 年成立,致力于一款能够代替人类使用电脑、操控软件的AI助手,旗下模型 ACT-1 还处于雏形阶段,但根据官方示例,已经可以完成通过自然语言指令完成特定的任务。公司创始人曾任OpenAI的工程副总裁,后来进入谷…

前端开发APP应该采取什么框架?

近十年,随移动网络在人们生活中的不断渗透以及线上服务需求的不断提升,人们对于桌面应用、APP、小程序、物联网终端设备等的需求不断提升。据公开数据显示,2022年,小程序数量已超550万;工信部数据显示,截止…

会议回顾!2023机器视觉在线研讨会圆满结束

4月20日下午,持续两小时的“融合生态,让制造与视俱进”2023机器视觉在线研讨会圆满结束,此次会议联合机器视觉产业链上中下游厂商,共同分享工业机器视觉领域最新技术和应用案例,专题讲解与观众问答相互交织&#xff0c…

OpenAI API调用

上次简单写了一篇对ChatGPT的一些看法,最近想深入研究一下。 极客时间上有个课程《AI大模型之美》,看了一下还可以。当做入门是不错的,但还是有很多细节可以打磨,不过毕竟是在风口上的课,也能接受。 本次演示如何调用…

【小知识点总结】Java中的split函数的用法(二)

一、String.split()函数有两种形式 split(String regex) 会默认忽略字符串后面的分隔符split(String regex,int limit) regex:可以是字符串或者正则表达式 limit:可以限制返回的数组的元素个数,当其值为-1时,表示任意大小 // s.split("-")会忽…

阿赵的MaxScript学习笔记分享十五《MaxScript界面的进阶应用》

MaxScript学习笔记目录 大家好,我是阿赵,之前介绍过MaxScript的各种UI控件的用法,这次介绍一些稍微复杂一点的用法。 一、例子介绍 这次要做的例子,有一部分是使用了dotNet的UI控件,一部分是MaxScript自带的UI用法&a…

理解Vuex【Vue】

5. vuex 5.1 理解vuex 5.1.1 vuex是什么 概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式&#x…

AI风范,院士点赞丨北京人工智能峰会暨AI金雁奖颁奖典礼成功举办,实在智能再获AI金雁奖

4月14日,由中国电子商会人工智能委员会主办,中国创业者俱乐部、北京集智未来人工智能产业创新基地联合主办的“2023北京人工智能峰会暨AI金雁奖颁奖典礼”举行,汇聚了人工智能各领域的产学研专家、院士、人工智能企业代表近300人,…

Jenkins自动拉取SVN源代码构建打包vue前端项目

目录 1.功能需求 2.安装插件 2.1 安装NodeJS插件 2.2 安装SVN插件 3.配置环境 3.1 NodeJS环境 4.新建任务配置部署信息 4.1 源代码管理 4.2 构建触发器 4.3 构建环境 4.4 构建步骤 5.构建项目 5.1 点击查看控制台日志 1.功能需求 使用Jenkins从SVN上拉取Vue项…

C#基础学习--异步编程

什么是异步 启动程序时,系统会在内存中创建一个新的进程。进程是构成运行程序的资源的集合。进程是构成运行程序的资源的集合。这些资源包括虚地址空间,文件句柄和许多其他程序运行所需的东西 在进程内部,系统创建了一个称为线程的内核&…

思科实验 EIGRP

1.1.1 实验目的 通过对 CCNA 课程中的 EIGRP 实验部分进行回顾,从而更加准确掌握 EIGRP 路由协议的 配置方法,以及对 network 命令的正确理解。并且学会对 EIGRP 路由协议查看排错的相关命 令。 1.1.2 实验拓扑 拓扑说明:本实验由两台思科路…

ai文案生成器免费-ai文案改写软件免费

让你的文章更加精彩- AI文章润色 在今天的信息化时代,文章编辑变得越来越容易。但是,如何让自己的文章在海量信息中脱颖而出并吸引更多的阅读者却是一项挑战。 如果你是一位写作爱好者或你是一位工作中需要写作的从业者,你会发现你需要让你…

蓝桥杯15单片机--串口通信模块

目录 一、计算机常用通信方式 二、串口通信UART 三、串口通信寄存器 (1)串行口1控制寄存器SCON和PCON ​(2)串行口1数据缓冲器SBUF (3)串行口1辅助寄存器AUXR (4)串行口1中断…

蛇优化算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 蛇优化算法算法流程图初始化进化操作搜索阶段(无食物)——全局搜索搜索阶段(有食物)——局部搜索战斗模式交配模式 备…

SAS学习第9章:卡方检验之适合性检验与独立性检验

卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时&#xf…

APP渗透—MobSF安全评估、frida、r0capture抓包

APP渗透—MobSF安全评估、frida、r0capture抓包 1. 前言2. 补充AppInfoScanner相关内容3. MobSF安全评估3.1. 下载MobSF3.2. 安装Docker3.2.1. 查看Linux内核版本3.2.2. 更新yum包3.2.3. 安装Docker软件包3.2.4. 设置yum源3.2.5. 查看Docker版本3.2.6. 安装Docker3.2.7. 设置Do…