神经网络和深度学习(8)-- 向量化

神经网络和深度学习
上一篇主目录 下一篇

前言

向量化是非常基础的去除代码中 for 循环的艺术,在深度学习安全领域、深度学习实践 中,你会经常发现自己训练大数据集,因为深度学习算法处理大数据集效果很棒,所以你的 代码运行速度非常重要,否则如果在大数据集上,你的代码可能花费很长时间去运行,你将 要等待非常长的时间去得到结果。所以在深度学习领域,运行向量化是一个关键的技巧,以下介绍向量化。


1. 逻辑回归向量化

计算z=wTx+b的非向量方式:

z=0
for i in range(n_x)
z+=w[i]*x[i] 
z+=b

显式for-loop在大量数据集的时候真的很慢,为了提高性能效率,我们需要将其向量化在计算机中进行并行的计算,向量化的形式如下:
假设有m个样本
在这里插入图片描述
其中,各个符号代表的维度是:
w:(nx,1)
X:(nx,m)
b:(1,1)
Z:(1,m)
这里在 Python 中有一个巧妙的地 方,这里b是一个实数,或者你可以说是一个1 X 1 矩阵,只是一个普通的实数。但是当 你将这个向量加上这个实数时,Python 自动把这个实数 ܾ 扩展成一个1 X m 的行向量。 这种情况下的操作在 Python 中被称作广播(brosdcasting)

这就是在同一时间内你如何完成一个所有 m个训练样本的前向传播向量化计算。

2. 向量化逻辑回归梯度输出

如何 同时计算 m个数据的梯度,并且实现一个非常高效的逻辑回归算法(Logistic Regression)?
我们知道,

在这里插入图片描述
在这里插入图片描述

.....

对 ݉m个训练数据做同样的运算,我们 可以定义一个新的变量dZ:

在这里插入图片描述
所有的 ݀dz 变量横向排列,因此,ܼ݀ ݀dz 是 一个1 X m 的矩阵,或者说,一个 m 维行向量。我们已经知道如何 计算 A,即

在这里插入图片描述
我们需要找到这样的一个行向量 :

在这里插入图片描述

由此, 我们可以这样计算

在这里插入图片描述
不难发现第一个元素 就是 dz(1),第二个元素就是 ݀ dz(2)……所以我们现在仅需以上的一行代码,就可以同时完成这所有 的计算

总结起来,向前和向后传播的向量化公式为 :

在这里插入图片描述
现在我们利用前五个公式完成了前向和后向传播,也实现了对所有训练样本进行预测和 求导,再利用后两个公式,梯度下降更新参数。我们的目的是不使用 for 循环,所以我们就 通过一次迭代实现一次梯度下降,但如果你希望多次迭代进行梯度下降,那么仍然需要 for 循环,放在最外层。不过我们还是觉得一次迭代就进行一次梯度下降,避免使用任何循环比 较舒服一些。

注意,以上讨论的是逻辑回归中的向量化,而逻辑回归中是没有隐藏层的。在含有隐藏层的神经网络中,对神经网络的向量化不同


神经网络和深度学习系列笔记: 传送门

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值