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

这篇具有很好参考价值的文章主要介绍了【深度学习】2-2 神经网络 - 前向传播实现3层神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

神经网络分层

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

用图来表示神经网络的话,把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也叫隐藏层(或隐含层)
【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

实现3层神经网络

首先了解下权重符号的定义
【深度学习】2-2 神经网络 - 前向传播实现3层神经网络
图中权重w
**上标 (1)**表示的是第1层的权重
下标 1 表示后一层的第1个神经元
下标 2 表示前一层的第2个神经元

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

各层间信号传递的实现
【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

图中增加了表示偏置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函数。
【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

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)。输出层的实现也和之前的实现基本相同。不过,最后的激活函数和之前的隐藏层有所不同。
【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

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()

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

输出层所用的激活函数,要根据求解问题的性质决定
回归问题使用恒等函数 (回归一般用于预测,当然也可用于分类)
二元分类使用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值大小,预测值与当天实际数值大小越接近,回归分析算法的可信度越高。文章来源地址https://www.toymoban.com/news/detail-490492.html

到了这里,关于【深度学习】2-2 神经网络 - 前向传播实现3层神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 神经网络基础-神经网络补充概念-27-深层网络中的前向传播

    深层神经网络中的前向传播是指从输入数据开始,逐层计算每个神经元的输出值,直到得到最终的预测值。 1输入数据传递: 将输入数据传递给网络的输入层。输入数据通常是一个特征矩阵,每一列代表一个样本,每一行代表一个特征。 2加权求和和激活函数: 对于每个隐藏

    2024年02月12日
    浏览(27)
  • 0基础入门---第3章---神经网络(前向传播)

    🌞欢迎来到深度学习的世界  🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢! 目录 3.1 从感知机到神经网络 3.2 激活函数 3.3 多维数组的运算 3.4 3层神经网络的实现 3.5 输出

    2024年02月09日
    浏览(37)
  • 神经网络中,前向传播、反向传播、梯度下降和参数更新是怎么完成的

    神经网络中,前向传播、反向传播、梯度下降和参数更新是怎么完成的 在神经网络的训练过程中,前向传播、反向传播、梯度下降和参数更新是按照以下顺序完成的: 前向传播(Forward Propagation): 在前向传播阶段,输入样本通过神经网络的各个层,从输入层到输出层逐步进

    2024年02月16日
    浏览(28)
  • 【人工智能】神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

    前向传播 是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后,最终得到输出结果的过程。在前向传播中,神经网络会将每一层的输出作为下一层的输入,直到输出层得到最终的结果。 反向传播 是指在神经网络训练过程中,通过计算损失函数的梯度,将

    2024年02月16日
    浏览(29)
  • 【人工智能】— 神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

    前向传播和反向传播 都是神经网络训练中常用的重要算法。 前向传播 是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后,最终得到输出结果的过程。在前向传播中,神经网络会将每一层的输出作为下一层的输入,直到输出层得到最终的结果。 反向传播

    2024年02月10日
    浏览(33)
  • 神经网络中的前向传播(Forward Propagation)和后向传播(Backward Propagation)

    有时候会搞混这两个概念。什么是前向传播?不是只有后向传播吗?后向传播好像是用来更新模型参数的,前向传播是什么东西? 带着疑问再次梳理一遍: 前向传播是神经网络进行预测的过程。在这个过程中,输入数据沿着神经网络从输入层经过隐藏层(如果有的话)最终

    2024年02月20日
    浏览(28)
  • 深度学习 | 前馈神经网络与反向传播算法

    目录 一、Logistic函数 二、前馈神经网络(FNN) 三、反向传播算法(BP算法) ​四、基于前馈神经网络的手写体数字识别 Logistic函数是学习前馈神经网络的基础。所以在介绍前馈神经网络之前,我们首先来看一看Logistic函数。 Logistic函数定义为: Logistic函数可以看成是一个“挤

    2024年02月04日
    浏览(31)
  • 深度学习|4.1 深L层神经网络 4.2 深层网络的正向传播

    对于某些问题来说,深层神经网络相对于浅层神经网络解决该问题的效果会较好。所以问题就变成了神经网络层数的设置。 其中 n [ i ] n^{[i]} n [ i ] 表示第i层神经节点的个数, w [ l ] w^{[l]} w [ l ] 代表计算第l层所采用的权重系数, b [ l ] b^{[l]} b [ l ] 代表计算第l层所用的偏移量

    2024年01月21日
    浏览(24)
  • 机器学习17:训练神经网络-反向传播算法

    反向传播算法对于快速训练大型神经网络至关重要。本文将介绍算法的工作原理。 目录 1.简单的神经网络 2.激活函数 3.错误函数 4.正向传播 4.1 更新隐藏层 5.反向传播 5.1 求导数

    2024年02月12日
    浏览(39)
  • 【深度学习】3-4 神经网络的学习- 学习算法的实现

    神经网络的学习步骤如下所示: 步骤1(mini-batch) 从训练数据中随机选出一部分数据,目标是减小mini-batch的损失函数的值 步骤2(计算梯度) 为了减小mini-batch的损失函数的值,需要求出各个权重参数的梯度 步骤3(更新参数) 将权重参数沿梯度方向进行微小更新. 步骤4(重复) 重复步

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包