【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

news2024/12/23 22:11:46

神经网络分层

神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。

用图来表示神经网络的话,把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也叫隐藏层(或隐含层)
在这里插入图片描述

实现3层神经网络

首先了解下权重符号的定义
在这里插入图片描述
图中权重w
**上标 (1)**表示的是第1层的权重
下标 1 表示后一层的第1个神经元
下标 2 表示前一层的第2个神经元

权重右下角按照“后一层的索引号、前一层的索引号”的顺序排列。

各层间信号传递的实现
在这里插入图片描述

图中增加了表示偏置b的神经元“1”。请注意,偏置的右下角的索号只有一个。这是因为前一层的偏置神经元(神经元“1”)只有一个.

为了确认前面的内容,现在用数学式表示 a1,其通过加权信号和偏置按如下方式进行计算
a1(1) = w11(1) x1 +w12(1) x2+ b1(1)

如果使用矩阵的乘法运算,则可以将第1层的加权和表示成下面的式子
A(1) = XW(1)+ B(1)
其中,各参数的表示如下:
因为上标都是(1) 所以在下面的式子中省略(1)
A = ( a   1   a   21   a   31   ) (0) A= \begin{pmatrix} a~1~ & a~21~ & a~31~ \\ \end{pmatrix} \tag{0} A=(a 1 a 21 a 31 )(0)
X = ( x   1   x   2   ) (0) X= \begin{pmatrix} x~1~ & x~2~ \\ \end{pmatrix} \tag{0} X=(x 1 x 2 )(0)
B = ( b   1   b   2   b   3   ) (0) B= \begin{pmatrix} b~1~ & b~2~ & b~3~\\ \end{pmatrix} \tag{0} B=(b 1 b 2 b 3 )(0)

W = ( w   11   w   21   w   31   w   12   w   22   w   32   ) (0) W= \begin{pmatrix} w~11~ & w~21~ & w~31~ \\ w~12~ & w~22~ & w~32~ \\ \end{pmatrix} \tag{0} W=(w 11 w 12 w 21 w 22 w 31 w 32 )(0)

下面用NumPy多维数组来实现

X=np.array([1.0, 0.5])
W1 = np.array([0.1,0.3,0.5],[0.2,0.4,0.6])
B1=np.array([0.1,0.2,0.3])

print(W1.shape)
print(X.shape)
print(B1.shape)

A1 = np.dot(X,W1)+B1

隐藏层的加权和(加权信号和偏置的总和)用a表示,被激活函数转换后的信号用z表示。此外,图中h()表示激活函数,这里我们使用的是sigmoid函数。
在这里插入图片描述

X=np.array([1.0, 0.5])
W1 = np.array([0.1,0.3,0.5],[0.2,0.4,0.6])
B1=np.array([0.1,0.2,0.3])

print(W1.shape)
print(X.shape)
print(B1.shape)

A1 = np.dot(X,W1)+B1
Z2 =sigmoid(A2)

最后是第2层到输出层的信号传递(图3-20)。输出层的实现也和之前的实现基本相同。不过,最后的激活函数和之前的隐藏层有所不同。
在这里插入图片描述

def identity_function(x):
	return x
W3 = np.array([[0.10.3][0.20.4]])
B3 = np.array([0.10.2])
A3 =np.dot(Z2,W3)+ B3
Y=identity_function(A3)  # 或Y=A3

identity_function()函数也叫恒等函数并将其作为输出层的激活函数。

另外要注意的是,在下图中输出层的激活函数用 σ()
表示,不同于隐藏层的激活函数h()

在这里插入图片描述

输出层所用的激活函数,要根据求解问题的性质决定
回归问题使用恒等函数 (回归一般用于预测,当然也可用于分类)
二元分类使用sigmoid函数
多元分类可以使用softmax函数

代码总结

def init_network():
	network={}
	network['W1'] = np.array([0.1,0.3,0.5],[0.2,0.4,0.6])
	network['b1'] = np.array([0.1,0.2,0.3])
	network['W2'] = np.array([0.1,0.4],[0.2,0.5],[0.3,0.6])
	network['b2'] = np.array([0.1,0.2])
	network['W3'] = np.array([0.1,0.3],[0.2,0.4])
	network['b2'] = np.array([0.1,0.2])
	return network

def forward(network, x):
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    a1 = np.dot(x, W1) + b1
    z1 = sigmoid(a1)
    a2 = np.dot(z1, W2) + b2
    z2 = sigmoid(a2)
    a3 = np.dot(z2, W3) + b3
    y = identity_function(a3)

    return y

network = init_network()
x=np.array([1.0,0.5])
y=forward(network, x)
print(y)

这样通过NumPy多维数组,可以实现神经网络

补充知识:
回归问题多用来预测一个具体的数值,如预测房价、未来的天气情况等等。例如我们根据一个地区的若干年的PM2.5数值变化来估计某一天该地区的PM2.5值大小,预测值与当天实际数值大小越接近,回归分析算法的可信度越高。

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

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

相关文章

深入了解计算机SNMP协议:原理、功能和应用场景

前言 简单网络管理协议(SNMP)是一种用于管理网络设备的协议,它可以让管理员通过网络对设备进行监控、配置和故障排除等操作。本文将详细介绍SNMP的版本、管理信息库MIB、管理信息结构(SMI)、SNMP报文、5种协议数据单元…

avive零头撸矿

Avive 是一个透明的、自下而上替代自上而下的多元网络,旨在克服当前生态系统的局限性,实现去中心化社会。 aVive:一个基于 SBT 和市场的 deSoc,它使 dapps 能够与分散的位置 oracle 和 SBT 关系进行互操作。您的主权社交网络元宇宙…

Vue中如何进行表单验证码与滑动验证?

Vue中如何进行表单验证码与滑动验证? 在Web应用程序中,表单验证码和滑动验证是常见的安全机制,用于防止恶意攻击和机器人攻击。在Vue中,我们可以使用许多不同的库来实现这些功能。本文将介绍如何使用Vue和vue-verify-code库来实现…

docker中部署lnmp架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 docker中部署lnmp架构 前言一、安装docker和docker-compose二、文件部署准备三、创建ngixn虚拟主机配置文件四、创建html文件夹五、启动容器文件结构 前言 Docker是一种轻量…

5.6.1 Ext JS之标签页的关闭和批量关闭

Tab Panel 是包含多个标签页的面板, 这是一种很常用的组件, 类似于浏览器的标签页。关于 Ext JS的Tab Panel的基本使用可以参考: [Ext JS3.9] 标签面板(TabPanel )介绍与开发, 本篇介绍如何关闭单个标签页和批量关闭标签页。 Tab 标签页的可关闭 默认状况下,标签页是无…

23.反射(reflection)|Java学习笔记

文章目录 反射机制Java反射机制原理图Java反射机制可以完成反射相关的主要类反射优点和缺点 Class类 反射机制 一个简单的例子: package com.edu.reflection.question;import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.Invo…

消防安全知识答题活动小程序v5.0-支持答题后抽奖

关于答题抽奖活动小程序的设计思考 1. 功能设计:作为答题抽奖活动小程序,核心功能应包括答题和抽奖两部分。用户通过答题获取抽奖机会,答题可以设置为多个题目,用户回答正确则获得相应分数。在用户答完问题后,可以立即…

优思学院|企业业绩差的7大原因,善用精益管理可解决

在当今竞争激烈的商业环境中,一些企业的业绩表现出了较差的趋势,这可能是由于多种原因造成的。下面将探讨企业业绩差的七大原因,并介绍如何善用精益管理来提升企业的绩效。 1. 战略定位不清 企业业绩差的一个常见原因是战略定位不清。如果企…

如何用流量涡轮打造属于自己的汽车行业高价值私域流量池

01. 私域提升品牌价值 2010年以来,中国汽车工业就一直处于两位数的增长。这使得国内外品牌都能在市场上站稳脚跟。这为许多汽车公司提供了获得可观利润的绝佳机会。汽车成为明星行业,在此阶段的车企高管们也成为了行业翘楚。然而,2018年之后…

延迟渲染G-buffer所占显存带宽计算(解决移动端和抗锯齿的若干疑问)

延迟渲染需要在前面阶段,将计算的内容保留在N张G-buffer中,但是网上的文章只是提及了G-buffer应该压缩,并且尽量少用,没有说明G-buffer所占带宽应该是多少,我将在下面介绍G-buffer所占显存带宽的详细计算方法 G-buffe…

4、DuiLib了解 XML使用和布局控制

文章目录 1、了解 XML使用和布局控制2、内外边距3、浮动4、占位符5、默认样式6、全局字体 1、了解 XML使用和布局控制 通过上一篇的学习我们可以制作一个简单的布局了,但是没有控件的窗口做再好的布局有什么用呀。赶紧找些素材,我们来做一个标准的 Wind…

黄金期货交易规则有哪些?黄金期货交易规则详解

黄金期货交易是一种高风险的投资工具,因此新手投资者在准备交易前建议先学习重要的黄金期货交易规则,对黄金期货产品交易有一个大概的了解。黄金期货交易规则有哪些?以下是重要的黄金期货交易规则详解 黄金期货交易规则一、交易前需要先开户 …

在Deepin虚机中共享使用主机文件夹

一、系统环境: 操作系统:Win11 虚机版本:VMWare workstation 16 pro 虚机系统:deepin 20.9 二、主机中操作 VMWare Workstation/虚拟机/设置/选项/共享文件夹 默认为已禁用,在右侧选择“总是启用”,在…

如何知道自己的论文适合哪个期刊呢?

论文写得好,不如期刊选得好! 如何才能快速、轻松地找到适合的SCI论文期刊呢?在这篇文章中,笔者将分享选择SCI期刊的方法,并总结了需要考虑的要素,可以帮助作者缩小期刊选择的范围,迅速做出最佳决…

自制开源的 Midjourney、Stable Diffusion “咒语”作图工具

本篇文章聊聊如何通过 Docker 和八十行左右的 Python 代码,实现一款类似 Midjourney 官方图片解析功能 Describe 的 Prompt 工具。 让你在玩 Midjourney、Stable Diffusion 这类模型时,不再为生成 Prompt 描述挠头。 写在前面 本文将提供两个版本的工…

0基础学习VR全景平台篇第44篇:编辑器底部菜单- 添加多态

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,底部菜单—添加多态功能操作。 功能位置示意 一、本功能将用在哪里? 多态场景,指同一个空间场景不同状态下的无缝切换,通过拍…

netty 总结

1. NIO和BIO的比较 BIO以流的方式处理数据,而NIO以块的方式处理数据,块I/O的效率比流I/O高很多。 BIO是阻塞的,NIO是非阻塞的 BIO基于字节流和字符流进行操作,而NIO是基于Channel(通道)和Buffer&#xff08…

Android 反编译apk,然后修改内容后二次签名打包

1. 下载apktool.jar ,下载地址: iBotPeaches / Apktool / Downloads — Bitbucket 2. mac电脑使用 apksigner 方式签名, 需要配置环境. 2.1 命令行输入: open .bash_profile, 在打开的环境配置文件中添加,根据自己SDK目录配置 export APK_SIGNER_HOME/opt/android-sd…

QML TreeView 简单使用

本文主要介绍 QML 中 TreeView 的基本使用方法,包括:TreeView的适用场景; 控件简介 QML TreeView 是 Qt Quick 中的一个组件,用于显示树形结构的数据。它提供了一种以层次结构方式展示数据的方式,其中每个节点可以包含…

蒸汽朋克 VoxEdit 竞赛

欢迎来到蒸汽朋克 VoxEdit 比赛,在这个充满装备和蒸汽的世界里,创意和体素互相碰撞,激发无尽创意! 蒸汽朋克是将过去重新想象为带有未来主义色彩的风格。通过将维多利亚时代的优雅与蒸汽动力机械和黄铜装置相结合,将您…