吴恩达深度学习笔记2 python与向量化

本文探讨了如何通过向量化运算和利用GPU的SIMD指令来加速深度学习算法,特别是在逻辑回归中的应用。此外,介绍了Python中的广播机制,允许不同维度矩阵进行运算。同时,分享了使用assert语句和reshape函数来优化Python代码的实践建议。
摘要由CSDN通过智能技术生成

1  深度学习算法中,数据量很大,在程序中应该尽量减少使用loop循环语句,多使用向量运算来提高程序运行速度。向量化(Vectorization)就是利用矩阵运算的思想,大大提高运算速度。

为了加快深度学习神经网络运算速度,可以使用比CPU运算能力更强大的GPU。事实上,GPU和CPU都有并行指令(parallelization instructions),称为Single Instruction Multiple Data(SIMD)。SIMD是单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。SIMD能够大大提高程序运行速度,例如python的numpy库中的内建函数(built-in function)就是使用了SIMD指令。相比而言,GPU的SIMD要比CPU更强大一些。

我们将向量化的思想使用在逻辑回归算法上,尽可能减少for循环,而只使用矩阵运算。值得注意的是,算法最顶层的迭代训练的for循环是不能替换的。而每次迭代过程对J,dw,b的计算是可以直接使用矩阵运算

2 广播(Broadcasting)

python中的广播机制可由下面四条表示:

  •     让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
  •     输出数组的shape是输入数组shape的各个轴上的最大值
  •     如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错
  •     当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值

简而言之,就是python中可以对不同维度的矩阵进行四则混合运算但至少保证有一个维度是相同的。下面给出几个广播的例子,具体细节可参阅python的相关手册,这里就不赘述了。

3 python技巧:

可以使用assert语句对向量或数组的维度进行判断,例如:

assert(a.shape == (5,1))

assert会对内嵌语句进行判断,即判断a的维度是不是(5,1)的。如果不是,则程序在此处停止。使用assert语句也是一种很好的习惯,能够帮助我们及时检查、发现语句是否正确。

另外,还可以使用reshape函数对数组设定所需的维度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值