神经网络基础--1.7 向量化Logistic回归(正向传播)

在这里插入图片描述
在这里插入图片描述
计算logistic回归导数:
在这里插入图片描述
在程序中有两个for循环

简化成一个for循环

想要去掉下面的那个循环,不显式地把dw1、dw2等初始化为0,把dw变成一个nx*1维的向量

  • d w = n p . z e r o s ( ( n x , 1 ) ) dw=np.zeros((n_x,1)) dw=np.zeros((nx,1))代替dw1和dw2等于0的初始化
  • d w + = x i d z i dw+=x^i dz^i dw+=xidzi代替下面的for循环
  • d w / = m dw/=m dw/=m代替最后一行dw1和dw2除以m

向量化

设有m个样本,原本需要计算:
在这里插入图片描述
需要重复上述步骤m次
处理z1、z2…zm

  • 现把所有训练样本堆叠起来,定义一个nx×m的矩阵X作为训练的输入(nx,m):
    在这里插入图片描述
  • 构建一个1×m的矩阵,计算z1、z2…zm都在同一时间,结果可以发现它可以表示为: Z = [ z 1 , z 2 . . . z m ] = w T X + [ b , b , b . . . b ] Z=[z^1,z^2...z^m]=w^TX+[b,b,b...b] Z=[z1,z2...zm]=wTX+[b,b,b...b]
    wT是一个行向量:
    在这里插入图片描述
    [b b b…b]是一个1×m的向量
  • 最后得到一个1×m的行向量:
    Z = [ z 1 , z 2 . . . z m ] = w T X + [ b , b , b . . . b ] = [ w T x 1 + b , w T x 2 + b . . . w T x m + b ] Z=[z^1,z^2...z^m]=w^TX+[b,b,b...b]=[w^Tx^1+b,w^Tx^2+b...w^Tx^m+b] Z=[z1,z2...zm]=wTX+[b,b,b...b]=[wTx1+b,wTx2+b...wTxm+b]
  • 最后行向量里的每一个元素,刚好是原始方法(本小节第一张图片中的三列公式)中的z1、z2…zm
  • 使用numpy实现:
#Python此处的b是一个实数不是矩阵,但把前面的(w.T,X)向量和b相加时,Python会自动将b扩展成一个1×m的行向量
#上述过程在Python中称为 广播
Z=np.dot(w.T,X)+b	

处理a1、a2…am

  • 将Z当做sigma函数的输入,同时计算所有a:
    A = [ a 1 , a 2 . . . a m ] = σ ( z ) A=[a^1,a^2...a^m]=\sigma(z) A=[a1,a2...am]=σ(z)

以上,是正向传播一步迭代的向量化实现,同时处理所有m个样本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值