必须会的深度学习基础!吴恩达deeplearning.ai:单个网络层上的前向传播

本文详细介绍了如何在Python中不依赖TensorFlow和PyTorch,自定义实现神经网络的前向传播过程,包括计算各层的激活值,如煮咖啡模型中的例子。
摘要由CSDN通过智能技术生成

如果你想要在python之中从头来实现一次前向传播,除了tensorflow和python库之中的内容,你能不能自己来写些呢(甚至比pytorch和tensorflow更好也说不定呢哈哈哈)
以下内容有任何不理解可以翻看我之前的博客哦


前向传播——煮咖啡模型(不了解可以看我之前的博客)

我们还是先看煮咖啡模型:

在这里插入图片描述

第一层

在python中,我们将使用数组来表示向量和参数,因此只有一个方括号:

x = np.array([200, 17])

你要计算的第一个值一定是第一层的激活值,其中第一个神经元的计算值为:
a 1 [ 1 ] = g ( w 1 [ 1 ] ⋅ x + b 1 [ 1 ] ) a_1^{[1]}=g(w_1^{[1]}\cdot x+b_1^{[1]}) a1[1]=g(w1[1]x+b1[1])
因此,为了计算 a 1 [ 1 ] a_1^{[1]} a1[1],我们需要有 w 1 [ 1 ] w_1^{[1]} w1[1] b 1 [ 1 ] b_1^{[1]} b1[1]

w1_1 = np.array([1, 2])
b1_1 = np.array([-1])

然后就可以计算:

z1_1 = np.dot(w1_1, x) + b1_1

np.dot()是numpy中的一个库函数,可以用来进行矩阵的乘法运算
根据上面的公式,你就可以算出激活值的第一个数了:

a1_1 = sigmoid(z1_1)

第二、三层

同样地,我们可以算出激活值中的其它两个数:
a 2 [ 1 ] = g ( w 2 [ 1 ] ⋅ x + b 2 [ 1 ] ) a 3 [ 1 ] = g ( w 3 [ 1 ] ⋅ x + b 3 [ 1 ] ) a_2^{[1]}=g(w_2^{[1]}\cdot x+b_2^{[1]})\\ a_3^{[1]}=g(w_3^{[1]}\cdot x+b_3^{[1]}) a2[1]=g(w2[1]x+b2[1])a3[1]=g(w3[1]x+b3[1])

w1_2 = np.array([-3, 4])
b1_2 = np.array([1])
z1_2 = np.dot(w1_2, x) + b1_2
a1_2 = sigmoid(z1_2)
w1_3 = np.array([5, -6])
b1_3 = np.array([2])
z1_3 = np.dot(w1_3, x) + b1_3
a1_3 = sigmoid(z1_3)

这样,我们就有整个的激活值了:

a1 = np.array([a1_1, a1_2, a1_3])

最终输出层

最后再看最终输出层:
a 1 [ 2 ] = g ( w 1 [ 2 ] ⋅ a [ 1 ] + b 1 [ 2 ] ) a_1^{[2]}=g(w_1^{[2]}\cdot a^{[1]}+b_1^{[2]}) a1[2]=g(w1[2]a[1]+b1[2])

w2_1 = np.array([-7, 89])
b2_1 = np.array([3])
z2_1 = np.dot(w2_1, a1) + b2_1
a2_1 = sigmoid(z2_1)

在原视频中,作者的一些字母标记我认为出现了一些错误,便进行了一些修改,如果仍然有误可以评论区联系我讨论哦。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江安的猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值