【深度学习_TensorFlow】感知机、全连接层、神经网络

写在前面

感知机、全连接层、神经网络是什么意思?


感知机: 是最简单的神经网络结构,可以对线性可分的数据进行分类。

全连接层: 是神经网络中的一种层结构,每个神经元与上一层的所有神经元相连接,实现全连接。

神经网络: 是由大量神经元组成的网络结构,通过层与层之间的连接,实现对数据的表示和转换。神经网络通常由输入层、隐藏层和输出层等全连接层构成。

三者有什么关系?


  • 感知机是最简单的单层神经网络,仅有输入层和输出层。

  • 全连接层是构建多层神经网络时常用的一种层类型。

  • 神经网络通常由多层的全连接层叠加构成,从而实现比单层感知机更强大的功能。

所以可以说,感知机是简单的神经网络,全连接层是构建复杂神经网络的基础模块,神经网络通过组合多层全连接层实现复杂的功能。感知机和全连接层都是神经网络的组成要素。


写在中间

一、感知机

感知机(Perceptron)是一种简单的人工神经网络,由Frank Rosenblatt于1957年提出。它是一种线性二分类模型,主要用于解决二元分类问题。感知机的基本结构包括输入层、输出层和一个线性分类器。输入层接收输入数据,输出层提供分类结果,线性分类器将输入数据映射到输出层。

感知机模型的结构如下,它接受长度为𝑛的一维向量𝒙 = [𝑥1, 𝑥2, … , 𝑥𝑛],每个输入节点通过权值为[w1, w2, … , w𝑛]的连接汇集为变量 𝑧

z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b z=w_{1}x_{1}+w_{2}x_{2}+\cdots+w_{n}x_{n}+b z=w1x1+w2x2++wnxn+b

写为向量的形式为:

z = w T x + b z=w^{\mathrm{T}}x+b z=wTx+b

其中𝑏称为感知机的偏置(Bias),一维向量𝒘 = [𝑤1, 𝑤2, … , 𝑤𝑛]称为感知机的权值(Weight),𝑧 称为感知机的净活性值(Net Activation)。

感知机是线性模型,并不能处理线性不可分问题。通过在线性模型后添加激活函数后得到活性值(Activation) :

a = σ ( z ) = σ ( w T x + b ) a=\sigma(z)=\sigma(w^{\mathrm{T}}x+b) a=σ(z)=σ(wTx+b)

其中激活函数可以是阶跃函数,也可以是符号函数:

a = { 1 w T x + b ≥ 0 0 w T x + b < 0 a=\left\{\begin{matrix}1&w^\mathrm{T}x+b\geq0\\0&w^\mathrm{T}x+b<0\end{matrix}\right. a={10wTx+b0wTx+b<0

a = { 1 w T x + b ≥ 0 − 1 w T x + b < 0 a=\left\{\begin{matrix}1&\text{w}^\mathrm{T}x+b\geq0\\-1&\text{w}^\mathrm{T}x+b<0\end{matrix}\right. a={11wTx+b0wTx+b<0

在这里插入图片描述

二、全连接层

( 1 )了解概念

全连接层(Fully Connected Layer)是神经网络中的一种层结构,主要用于将前一层的输出与后一层的输入进行连接。全连接层中的每个神经元都与前一层的所有神经元相连,因此得名。它在感知机的基础上,将不连续的阶跃激活函数换成了其它平滑连续可导的激活函数,并通过堆叠多个网络层来增强网络的表达能力

我们通过替换感知机的激活函数,同时并行堆叠多个神经元来实现多输入、多输出的网络层结构。举一个最常用的例子:

构成 3 输入节点、2 个输出节点的网络层。其中第一个输出节点的输出为:

o 1 = σ ( w 11 ⋅ x 1 + w 21 ⋅ x 2 + w 31 ⋅ x 3 + b 1 ) o_1=\sigma(w_{11}\cdot x_1+w_{21}\cdot x_2+w_{31}\cdot x_3+b_1) o1=σ(w11x1+w21x2+w31x3+b1)

第二个输出节点的输出为:

o 2 = σ ( w 12 ⋅ x 1 + w 22 ⋅ x 2 + w 32 ⋅ x 3 + b 2 ) o_{2}=\sigma(w_{12}\cdot x_{1}+w_{22}\cdot x_{2}+w_{32}\cdot x_{3}+b_{2}) o2=σ(w12x1+w22x2+w32x3+b2)

输出向量为𝒐 = [𝑜1, 𝑜2],通过矩阵可以表达为如下的形式:

[ o 1 o 2 ] = [ x 1 x 2 x 3 ] @ [ w 11 w 12 w 21 w 22 w 31 w 32 ] + [ b 1 b 2 ] \begin{bmatrix}o_1&o_2\end{bmatrix}=\begin{bmatrix}x_1&x_2&x_3\end{bmatrix}@\begin{bmatrix}w_{11}&w_{12}\\w_{21}&w_{22}\\w_{31}&w_{32}\end{bmatrix}+\begin{bmatrix}b_1&b_2\end{bmatrix} [o1o2]=[x1x2x3]@ w11w21w31w12w22w32 +[b1b2]

可以归纳为

O = X @ W + b \boldsymbol{O}=X@W+\boldsymbol{b} O=X@W+b

输入矩阵𝑿的 shape 定义为 [ b , d i n ] [b, d_{in}] [b,din],𝑏为样本数量,此处只有 1 个样本参与前向运算, d i n d_{in} din为输入节点数;权值矩阵 W 的 shape 定义为 [ d i n , d o u t ] [d_{in}, d_{out}] [din,dout] d o u t d_{out} dout为输出节点数,偏置向量 b 的 shape 定义为 [ d o u t ] [d_{out}] [dout]

2 )学会实现

全连接层本质上是矩阵的相乘和相加运算,实现并不复杂。TensorFlow 中有使用方便的层实现方式:layers.Dense(units, activation)。通过 layer.Dense 类,只需要指定输出节点数 units 和激活函数类型 activation 即可。

fc = layers.Dense(units=512, activation=tf.nn.relu)

上述通过一行代码即可以创建一层全连接层 fc,并指定输出节点数为 512,并创建内部权值张量𝑾和偏置张量𝒃。我们可以通过类内部的成员名 fc.kernelfc.bias来获取权值张量𝑾和偏置张量𝒃对象

三、神经网络

通过层层堆叠上面的全连接层,保证前一层的输出节点数与当前层的输入节点数匹配,,即可堆叠出任意层数的网络。我们把这种由神经元相互连接而成的网络叫做神经网络。

如图其中第 1~3 个全连接层在网络中间,称之为隐藏层 1、2、3,最后一个全连接层的输出作为网络的输出,称为输出层。隐藏层 1、2、3 的输出节点数分别为[256,128,64],输出层的输出节点数为 10。

在这里插入图片描述

下面我们就用张量的方式来实现上面的神经网络

# 隐藏层 1 张量 
w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1)) 
b1 = tf.Variable(tf.zeros([256])) 
# 隐藏层 2 张量 
w2 = tf.Variable(tf.random.truncated_normal([256, 128], stddev=0.1)) 
b2 = tf.Variable(tf.zeros([128])) 
# 隐藏层 3 张量 
w3 = tf.Variable(tf.random.truncated_normal([128, 64], stddev=0.1)) 
b3 = tf.Variable(tf.zeros([64])) 
# 输出层张量 
w4 = tf.Variable(tf.random.truncated_normal([64, 10], stddev=0.1)) 
b4 = tf.Variable(tf.zeros([10])) 

但是随着网络层数的增加,这样手动创建一个神经网络就显得过于繁琐,我们有更为简单的层实现方式,对于这种数据依次向前传播的网络,也可以通过 Sequential 容器封装成一个网络大类对象,调用大类的前向计算函数一次即可完成所有层的前向计算,使用起来更加方便:

#  导入 Sequential 容器 
from keras import layers,Sequential 
 
#  通过 Sequential 容器封装为一个网络类 
model = Sequential([ 
    layers.Dense(256, activation=tf.nn.relu) , # 创建隐藏层 1 
    layers.Dense(128, activation=tf.nn.relu) , # 创建隐藏层 2  
    layers.Dense(64, activation=tf.nn.relu) , # 创建隐藏层 3  
    layers.Dense(10, activation=None) , # 创建输出层  
])  

out = model(x) #  前向计算得到输出  

至此,网络构建的大体流程就讲解完毕了


写在最后

👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年08月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年08月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

京品优送元宇宙 上海布袋除尘器后一家太平洋百货月底停业

上海布袋除尘器后一家太平洋百货即将停业。 7月31日&#xff0c;上海太平洋百货微信公号发布公告称&#xff0c;由于与合资方的合作期限今年届满&#xff0c;上海太平洋百货徐汇店将于2023年8月31日营业结束后正式谢幕&#xff0c;终止经营&#xff0c;并于即日起开展大型主题感…

开放式蓝牙耳机哪个品牌好用?盘点几款很不错的开放式耳机

​相比传统入耳式耳机&#xff0c;开放式耳机因其不入耳不伤耳的开放设计&#xff0c;不仅带来了舒适的佩戴体验&#xff0c;还创造了一种与周围环境互动的全新方式&#xff0c;户外运动过程时也无需担心发生事故&#xff0c;安全性更高。我整理了几款比较好用的开放式耳机给大…

食品厂能源管理系统助力节能减排,提升可持续发展

随着全球能源问题的日益突出&#xff0c;食品厂作为能源消耗较大的行业&#xff0c;如何有效管理和利用能源成为了一项重要任务。引入食品厂能源管理系统可以帮助企业实现节能减排&#xff0c;提高能源利用效率&#xff0c;同时也符合可持续发展的理念。 食品厂能源管理系统的…

go程序使用tcp短连接报:only one usage of each socket address

环境及现象 Win10上位机&#xff08;C#,WPF&#xff09;后台使用go作为服务。 连接情况 C#连接大概60个TCP长连接&#xff08;设备&#xff09;。 后台go服务连接60个UDP短连接&#xff08;设备附属硬件&#xff09;&#xff0c; 10个TCP短连接&#xff08;PLC,modbus通讯&a…

了解国家电网

参考网站&#xff1a; https://www.dlzstp.com 参考网站&#xff1a; https://zhuanlan.zhihu.com/p/99743123 中国电网分为国家电网和南方电网两个大型电网集团&#xff0c;南方电网管理广东、广西、海南、云南、贵州5省电网&#xff0c;国网管理除这5个省外的26个省市、市…

P1173 [NOI2016] 网格

题目提供者洛谷 难度NOI/NOI/CTSC 历史分数100 题目描述 跳蚤国王和蛐蛐国王在玩一个游戏。 他们在一个 n 行 m 列的网格上排兵布阵。其中的 cc 个格子中 (0 ≤ c ≤ n⋅m)&#xff0c;每个格子有一只蛐蛐&#xff0c;其余的格子中&#xff0c;每个格子有一只跳蚤。 我们…

安卓证书生成教程

1.下载安装JDK文件&#xff08;如已安装请跳过&#xff09; 根据电脑系统版本下载JDK版本文件 下载地址&#xff1a;[https://www.oracle.com/java/technologies/downloads/](https://www.oracle.com/java/technologies/downloads/) 如果电脑上安装过JDK文件可以跳过2.生成密钥…

解决mvn clean install遇到testng单元测试失败时打包也失败的问题

解决mvn clean install遇到testng单元测试失败时打包也失败的问题 看这个之前请先看这个 Jenkins执行Testng 比如我现在就有一个单元测试失败的项目 执行mvn clean install的时候就会报错 下面是我现在的pom.xml 但我们不希望这样&#xff0c;怎么办 <plugin><gr…

【JVM】(一)深入理解JVM运行时数据区

文章目录 一、JVM 运行流程二、虚拟机栈&#xff08;线程私有&#xff09;三、本地方法栈 &#xff08;线程私有&#xff09;四、方法区&#xff08;元数据区&#xff09;五、堆&#xff08;线程共享&#xff09;六、程序计数器&#xff08;线程私有&#xff09; 一、JVM 运行流…

【C++】开源:sqlite3数据库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍sqlite3数据库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

winform学习(3)-----Windows窗体应用和Windows窗体应用(.Net Framework)有啥区别?

1.模板选择 在学习winform的时候总是会对这两个应用不知道选择哪个&#xff1f;而且在学习的时候也没有具体的说明 首先说一下我是在添加控件的时候出现了以下问题 对于使用了Windows窗体应用这个模板的文件在工具箱中死活不见控件。 在转换使用了Windows窗体应用(.NET Fram…

性价比最高的护眼台灯是哪一款?性价比高的护眼台灯盘点

现在的孩子&#xff0c;不是以往的孩子那么的无忧无虑&#xff0c;他们要考虑的是学习的成绩&#xff0c;所以很多孩子为了能在父母面前能得到夸奖&#xff0c;就努力的学习&#xff0c;那么台灯就不可缺少&#xff0c;但是如今市场上的台灯太多了&#xff0c;如果你购买的台灯…

element表格+表单+表单验证结合u

一、结果展示 1、图片 2、描述 table中放form表单&#xff0c;放输入框或下拉框或多选框等&#xff1b; 点击添加按钮&#xff0c;首先验证表单&#xff0c;如果存在没填的就验证提醒&#xff0c;都填了就向下添加一行表单表格&#xff1b; 点击当前行删除按钮&#xff0c;…

linux鲁班猫屏幕和触摸[初用鲁班猫切换屏幕为MIPI-1080P][旋转屏幕为横屏显示][屏幕和触摸方向永久修改]

初用鲁班猫切换屏幕为MIPI-1080P 鲁班猫信息: 板卡从如下地址采购:https://detail.tmall.com/item.htm?_u110jcean66aa&id694560455663&spma1z09.2.0.0.56f52e8dj4eUdI&skuId5156903694777 鲁班猫官方文档和教程:https://doc.embedfire.com/linux/rk356x/quick_s…

【计算机视觉】BLIP:统一理解和生成的自举多模态模型

文章目录 一、导读二、背景和动机三、方法3.1 模型架构3.2 预训练目标3.3 BLIP 高效率利用噪声网络数据的方法&#xff1a;CapFilt 四、实验4.1 实验结果4.2 各个下游任务 BLIP 与其他 VLP 模型的对比 一、导读 BLIP 是一种多模态 Transformer 模型&#xff0c;主要针对以往的…

2023华数杯数学建模A题思路分析 - 隔热材料的结构优化控制研究

# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性&#xff0c;在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前&#xff0c;由单根隔热材料 A 纤维编织成的织物&#xff0c;其热导率可以直接测出&#xff1b;但是 单根隔热…

【前端】鼠标事件计算与圆心形成的角度

在业务需求中&#xff0c;常常出现一些我们无法完成的效果图&#xff0c;这时需要UI切图给我们&#xff0c;而切图后不可避免的一些点击事件无法方便的监听 如该图圆环&#xff0c;其实是一张单独的图片&#xff0c;这种情况下只能通过js判断用户点击、拖动的鼠标位置&#xf…

【flink】开启savepoint

先启动一个任务 flink run -c com.yang.flink.CDCJob test-cdc.jar开启savepoint 命令&#xff1a; flink savepoint JobID 文件地址 flink savepoint e929a11d79bdc5e6f140f2cfb92e1335 file:///workspace/flinkSavepoints/backend这样就开启好了 操作中的错误 详细信…

xml的注释删要干净Parameter index out of range (2 > number of parameters, which is 1).

报了这个bugjava.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1). 对应sql语句是这样的 把注释删掉&#xff0c;就不报错了&#xff0c;这是什么奇葩bug