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

news/2025/1/13 8:06: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 networkdef 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) + b1z1 = sigmoid(a1)a2 = np.dot(z1, W2) + b2z2 = sigmoid(a2)a3 = np.dot(z2, W3) + b3y = identity_function(a3)return ynetwork = init_network()
x=np.array([1.0,0.5])
y=forward(network, x)
print(y)

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

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


http://www.ppmy.cn/news/417739.html

相关文章

国货之光!百度飞桨与华为麒麟重磅合作

7月3日-7月4日,“Baidu Create 2019”百度AI开发者大会,在中国北京国家会议中心举行。 今天上午,在百度AI开发者大会现场,百度首席技术官王海峰与华为消费者BG软件总裁王成录博士联合宣布,百度飞桨与华为麒麟达成深度…

华为鸿蒙麒麟巴龙鲲鹏,华为四大芯片 麒麟、巴龙、昇腾和鲲鹏“四大天王”...

华为作为我国通信科技行业企业,在2004年成立海思半导体开始研制芯片,如今在5G技术已经达到世界领先地位,不被国外芯片所限制,华为旗下拥有四大芯片:麒麟系列、巴龙系列、昇腾系列和鲲鹏系列,下面跟随小编来…

消息称华为麒麟 A2 处理器已有量产能力,海思将率先在可穿戴设备领域回归

华为海思将于 2023 年第 3 季度或第 4 季度推出麒麟 A2 处理器,海思将在可穿戴设备处理器领域率先回归。 报道指出,华为已经测试麒麟 A2 很长一段时间,已准备试产,且具备量产能力。不过,在最终交付量产之前&#xff0c…

麒麟659鸿蒙系统,华为官宣自研系统,麒麟659以上的华为手机可以直接切换新系统...

原标题:华为官宣自研系统,麒麟659以上的华为手机可以直接切换新系统 华为推出搭载自己研发的系统的手机,对中国来说意义重大,若干年后,会成为收藏品吗?华为操作系统的推出,必然会吸引相当多的国…

银河麒麟软件源更新

银河麒麟有用软件源: 1.银河麒麟系统无法更新下载软件,原因是软件源失效; 2.需要更换有效的软件源; 3.修改软件源地址: 在etc/apt 的sources.list文件里添加镜像源: deb http://archive.ubuntu.com/ubuntu/…

升级电子狗显示无法连接到服务器,什么是云电子狗?电子狗云升级是什么

云电子狗是科技发展时代进步的必然产物,它是由普通电子狗进化而来,继承了普通电子狗一切优点,同时又运用最新科技不断突破,它是一种通过无线网络实时与中心服务器进行数据交互的GPS雷达预警仪器,包括中心服务器端和客服…

麒麟处理器是基于arm的吗_麒麟处理器是华为自己研发制造的吗?

目前市场上流行的,自主研发智能手机处理器的就只有这么几家,如高通、苹果、三星、华为、联发科,而凑巧不凑巧的,这几家都是采用的ARM架构。这在行业里差不多已经形成了一个不成文的共识,智能手机处理器的架构都采用ARM…

麒麟软件、麒麟操作系统、银河麒麟、中标麒麟、优麒麟、国产操作系统下载。

麒麟软件 一、麒麟软件: 介绍:中国电子信息产业集团有限公司:(旗下) 1、中标软件有限公司 2、天津麒麟信息技术有限公司。 合称为:麒麟软件。 品牌:银河麒麟、中标麒麟。 应用:火星…