吴恩达deeplearning.ai:前向传播的一般实现

上一节之中我们了解了如何在Python之中实现前向传播,但是通过硬编码每个神经元的代码行过于繁琐,我们不妨尝试些更加一般的实现方法。
以下内容有任何不理解可以翻看我之前的博客哦


在Numpy之中实现前向传播

直接上代码:
使用上一节中用过的例子:
在这里插入图片描述
我们先初始化下各个变量:

W = np.array([
     [1, -3, 5],
     [2, 4, -6]])

在这里插入图片描述

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

在这里插入图片描述

a_in= np.array([-2, 4])

一般写法是这样的:

def dense(a_in, W, b, g)

在这里我们定义了一个fuction名叫dense,事实上我们是定义了一个密集层,其中,a_in是第0层,也就是特征向量;W,b是激活函数里面的参数,g代表的是sigmoid函数。

def dense(a_in, W, b, g):
  units = W.shape[1]# .shape(0)代表行数,.shape(1)代表列数,该段代码通过获取w的列数从而获得了神经元的个数
  a_out = np.zeros(units)# np.zeros():可以生成元素个数为units个的向量,该行创建了最终激活值大小的零向量
  for j in range units:# 将j从0到(units-1)进行循环
    w = W[:,j]# 拉出了W的第j列,其中‘:’表示进行切片操作,冒号左右为空的表示取出所有的行,冒号之后表示取出第j列,因此每次是取出了一列
    z = np.dot(w, a_in) + b[j]# 激活函数内的变量
    a_out[j] = g(z)# 将z套入sigmoid函数之中
  return a_out

注意,以上的步骤看上去其实有点复杂,这里其实是手动进行了矩阵乘法运算,在后面的章节会直接使用矩阵乘法的。

多密集层连接

在学会写一层密集层之后,可以尝试着将多个密集层连接在一起,利用sequential():

def sequential(x):
  a1 = dense(x, W1, b1)
  a2 = dense(a1, W2, b2)
  a3 = dense(a2, W3, b3)
  a4 = dense(a3, W4, b4)
  f_x = a4
  return a4

我相信,如果你看了我之前的博客,这段代码一定很好理解,就是一个前向传播。
今天 的代码实际上是比较偏底层的,这样对以后编写代码出现问题之后会有很大帮助。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江安的猪猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值