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

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

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第1张图片

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第2张图片

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

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第3张图片

2.11  向量化(vectorization)

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第4张图片

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

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举出三个向量化的例子

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第5张图片

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第6张图片

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第7张图片

2.13向量化计算正向传播


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

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第8张图片

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第9张图片

2.15 python中的broadcasting

学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)_第10张图片


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)) 

你可能感兴趣的:(Andrew,Ng课程学习笔记)