学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)

2.9针对单个样本的反向传播中的导数计算


2.10 针对m个样本的梯度下降


2.11  向量化(vectorization)


关于向量化的作用,可以参见下面的例子,直观而形象的看出向量化能够节省运算时间的开销

import numpy as np
import time
a=np.random.rand(1000000)
b =np.random.rand(1000000)

tic=time.time()
c=np.dot(a,b)
toc=time.time()
print(c)
print("vectorized version:"+str(1000*(toc-tic))+"ms")#向量化的版本运算,利用python的内置函数np.dot()

c=0
tic=time.time()
for i in range(1000000):
    c+=a[i]*b[i]
toc=time.time()
print(c)
print("for loop:"+str(1000*(toc-tic))+"ms")#非向量化版本,即利用for loop进行进行计算。
结果:
249644.0074125242
vectorized version:8.005380630493164ms
249644.0074125196
for loop:1472.203016281128ms

2.12举出三个向量化的例子




2.13向量化计算正向传播


2.14 介绍向量化的后向传播以及整个Logistics Regression 的向量化程序



2.15 python中的broadcasting



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)
结果为:
[[ 56.    0.    4.4  68. ]
 [  1.2 104.   52.    8. ]
 [  1.8 135.   99.    0.9]]
cal=A.sum(axis=0)#当里面出现axis=0时,表示矩阵竖轴(列)之和;如果是axis=1,即表示横轴(行)之和
print(cal)
结果为:
[ 59.  239.  155.4  76.9]
percentage=100*A/cal.reshape(1,4)
print(percentage)
结果为:
[[94.91525424  0.          2.83140283 88.42652796]
 [ 2.03389831 43.51464435 33.46203346 10.40312094]
 [ 3.05084746 56.48535565 63.70656371  1.17035111]]

2.16 关于Numpy的ticks:尽量避免出现秩为1的数组,做到明确相应变量的具体维度。

import numpy as np
a=np.random.randn(5) #为便于理解,尽量不要使用这种模棱两可,不太清楚的方式,尽量采取以下方式(明确其具体维度)
print(a)
print(a.shape)
print(a.T)
print(a.T.shape)

import numpy as np
a=np.random.randn(5,1)#即即使因为某些原因,得到了一个秩为1 的数组,也应利用reshape(1,n)将其转换成一个列或者行向量。
assert(a.shape==(5,1))
print(a)
print(a.T)
print(np.dot(a,a.T)) 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值