深度学习~向量化Logistic回归②

利用向量化同时计算m个训练数据的梯度

  • 定义一个 dZ = [ dz(1) dz(2) … dz(m) ]
  • A = [ a(1) … a(m) ]
  • Y = [ y(1) … y(m) ]
  • dZ = A - Y = [ a(1)-y(1) a(2)-y(2) … a(m)-y(m) ]
    仅需一行代码,就可以完成所有的这些计算,而去掉了繁琐的“for循环”。
  • db = 1/m × ∑mi=1 dz(i) = 1/m × np.sum(dz)
  • dw = 1/m × X × dzT
  • 如上所述,可以得到一个更高效的Logistic回归实现方法,下面来看看最原始的Logistic回归实现方式:
    在这里插入图片描述
  • 更高效的Logistic回归:
    Z = wT + b = np.dot(w.T,X) + b
    A = σ(Z)
    dZ = A - Y
    dw = 1/m × dZT
    db = 1/m × np.sum(dZ)
    w := w - α × dw
    b := b - α × dw
  • 当然,如果想要对梯度下降进行多次迭代,将还会需要一个最外层的for循环用来控制迭代次数,这个for循环是无法去掉的。

Python中的广播

  • 一个关于广播的例子
    在这里插入图片描述
    目标是计算四种食物中,卡路里有多少百分比来自碳水,蛋白和脂肪。能够不用循环实现嘛?实际上,将表格看作一个三行四列的矩阵A,Python的numpy中内置了“对矩阵的每一列求和,结果存放到一个一维行向量中”,以及“将每一行的元素除以某一行向量中对应位置的元素,将结果存放到矩阵中”等等的“复杂”方法,下面我们来看看如何使用它们。
  • 输入矩阵A:
    在这里插入图片描述
  • 利用sum和axis = 0的组合对列进行求和:
    在这里插入图片描述
  • 使用reshape()方法重新组合矩阵/向量
    在这里插入图片描述
    在这里插入图片描述
    一些细节:axis = 0代表着让python在竖直方向上求和。而设置axis = 1则是在水品方向上求和。
    在这里插入图片描述
  • 如何让一个3×4的矩阵A除以一个1×4的向量cal在这里插入图片描述
    与上式相近,Python会进行广播,以完成计算。
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值