python和向量化

为什么要向量化:使用for循环运行时间是使用向量运算运行时间的约300倍

我们把整个逻辑回归中的for循环尽可能用矩阵运算代替,对于单次迭代,梯度下降算法流程如下所示:

Z = np.dot(w.T,X) + b
A = sigmoid(Z)
dZ = A-Y
dw = 1/m*np.dot(X,dZ.T)
db = 1/m*np.sum(dZ)

w = w - alpha*dw
b = b - alpha*db

其中,alpha是学习因子,决定w和b的更新速度。上述代码只是对单次训练更新而言的,外层还需要一个for循环,表示迭代次数。

python中的广播机制:

python和向量化_第1张图片

如果我们要定义(5,1)的列向量或者(1,5)的行向量,最好使用下来标准语句,避免使用rank 1 array:

a = np.random.randn(5,1)  #定义5,1)的列向量,标准定义法
b = np.random.randn(1,5)
assert(a.shape == (5,1)) #使用assert语句对向量或数组的维度进行判断
a.reshape((5,1))          #还可以使用reshape函数对数组设定所需的维度

你可能感兴趣的:(吴恩达学习笔记,python,机器学习,深度学习)