吴恩达深度学习笔记(三)

吴恩达深度学习笔记(三)

二、神经网络的编程基础(Basics of Neural Network programming)

5.逻辑回归中的梯度下降( Logistic Regression Gradient Descent)

假设样本只有两个特征𝑥1和 𝑥2,为了计算 𝑧,我们需要输入参数 𝑤1、 𝑤2 和 𝑏,除此之外还有特征值 𝑥1和 𝑥2。因此 𝑧的计算公式为: 𝑧=𝑤1𝑥1+𝑤2𝑥2+𝑏。

  • 第一步:计算dz

逻辑回归公式
在这里插入图片描述
损失函数
𝐿(𝑦(𝑖),𝑦(𝑖))=−𝑦(𝑖)log𝑦(𝑖)−(1−𝑦(𝑖))log(1−𝑦^(𝑖))
代价函数
在这里插入图片描述

单个样本的代价函数为:

在这里插入图片描述
其中𝑎是逻辑回归的输出, 𝑦是样本的标签值。

代价函数 𝐿(𝑎,𝑦)关于 𝑎的导数:
在这里插入图片描述
在这里插入图片描述

  • 第二步:计算w和b变化对代价函数L的影响
    在这里插入图片描述

在该例子中:
在这里插入图片描述

  • 第三步:

更新 𝑤1=𝑤1−𝑎𝑑𝑤1, 更新 𝑤2=𝑤2−𝑎𝑑𝑤2 ,更新 𝑏=𝑏−𝛼𝑑𝑏。

6.向量化 (Vectorization)

代码实现

import numpy as np
import time # 导入时间库
a = np.random.rand(1000000)
b = np.random.rand(1000000) #通过 round 随机得到两个一百万维度的数组
tic = time.time()  # 现在测量一下当前时间

#向量化的版本
c = np.dot(a,b)
toc = time.time()
print("随机数为:" + str(c))
print("向量化版本时间:"+ str(1000*(toc-tic)) +"ms")  #打印一下向量化的版本的时间

#非向量化的版本
c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()
print("随机数为:" + str(c))
print("非向量化版本时间:" + str(1000*(toc-tic)) + "ms")  #打印 for 循环的版本的时间

结果展示

随机数为:250041.37224043452
向量化版本时间:4.990339279174805ms
随机数为:250041.37224043184
非向量化版本时间:401.25465393066406ms

一句话总结,和for循环相比,向量化可以快速得到结果。

7.Python 中的广播( Broadcasting in Python)

  1. A.sum(axis = 0) 中的参数 axis 。
    axis用来指明将要进行的运算是沿着哪个轴执行,0轴是垂直的,也就是列,而 1轴是水平的,也就是行。
  2. 广播机制
    在这里插入图片描述
  • 如果两个数组的后缘维度的轴长度相符或其中一方的轴长度为1,则认为它们是广播兼容的。广播会在缺失维度和轴长度为 1的维度上进行。
  • 后缘维度的轴长度:
    A.shape[-1] 即矩阵维度元组中的最后一个位置的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值