吴恩达深度学习

前面有的是手做的笔记,后期有时间出个详细讲解版(个人理解,数学计算真的需要一步一步进行计算)

向量化

向量化对于程序的改进是非常直观地,在理清前面老师捋的梯度下降算法的过程之后,开始讲向量化,向量化的出现主要就是针对for循环的(我们很喜欢,但是效率很低)
在这里插入图片描述

行吧虽然我的和老师比效率也不高,但是可以看出有小十倍的算力差距
(重新跑了一遍上面的,时间从3降到1.9了,开心!)
代码段1

import numpy as np

a=np.array([1,2,3,4])
print(a)

代码段2

# 标准向量化版本
import time
a=np.random.rand(1000000)
b=np.random.rand(1000000)

tic=time.time()
c=np.dot(a,b)
toc=time.time()
print("标准化表达"+str(1000*(toc-tic))+"ms")
print(c)

代码段3

# 非标准向量化版本
c=0
tic=time.time()
for i in range(1000000):
    c+=a[i]*b[i]
toc=time.time()
print("非标准化表达"+str(1000*(toc-tic))+"ms")
print(c)

这只是一点点代码,以后数据量多了能跑好几天的,也就是尽量向量化
将两个for循环缩减为一个,提高运算效率

这个就是把上面的代码优化
dw=np.zeros((n-x,1))
初始化都是0,n-x行1列的向量(就是dw1和dw2的定义)
下面也是,标上上标区别w就行

广播的例子

这个本来的例子是苹果鸡蛋牛肉巴拉巴拉的有时间整理
在这里插入图片描述
定义一个矩阵,对每列进行求和,将每列里面的元素分别除以每列的total

import numpy as np
A=np.array([[56.0,0.0,4.4,68.0],
           [1.2,104.0,52.0,8.0],
           [1.8,135.0,99.0,0.9]])
print(A)
cal=A.sum(axis=0)//表达我们要在垂直方向求和,假如axis=1说明在水平方向求和
print(cal)
percentage=100*A/cal.reshape(1,4)
print(percentage)

这一部分是老师给出尽量减少bug的建议

在这里插入图片描述
比如这个,一开始假如没有定义好矩阵的维度,就很容易导致代码不知道应该是谁成谁的转置
所以定义好
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值