python和向量化

文章讨论了使用向量化操作替代for循环在运行时间上的显著优势,特别是在梯度下降算法中。通过矩阵运算,如numpy的dot函数,可以极大地加速逻辑回归模型的训练过程。此外,文章还介绍了Python中的广播机制,用于处理不同形状的向量,以及如何正确定义和重塑向量的维度。
摘要由CSDN通过智能技术生成

为什么要向量化:使用for循环运行时间是使用向量运算运行时间的约300倍

我们把整个逻辑回归中的for循环尽可能用矩阵运算代替,对于单次迭代,梯度下降算法流程如下所示:

Z = np.dot(w.T,X) + b
A = sigmoid(Z)
dZ = A-Y
dw = 1/m*np.dot(X,dZ.T)
db = 1/m*np.sum(dZ)

w = w - alpha*dw
b = b - alpha*db

其中,alpha是学习因子,决定w和b的更新速度。上述代码只是对单次训练更新而言的,外层还需要一个for循环,表示迭代次数。

python中的广播机制:

如果我们要定义(5,1)的列向量或者(1,5)的行向量,最好使用下来标准语句,避免使用rank 1 array:

a = np.random.randn(5,1)  #定义5,1)的列向量,标准定义法
b = np.random.randn(1,5)
assert(a.shape == (5,1)) #使用assert语句对向量或数组的维度进行判断
a.reshape((5,1))          #还可以使用reshape函数对数组设定所需的维度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值