import numpy as np //导入numpy库
a=np.random.randn(5)//生成5个随机高斯变量,存储在数组a中
print(a) //[ .......]
print(a.shape) //(5,) 这是python秩为1的数组,既不是列向量也不是行向量
a=np.randon.randn(5,1) //这是一个5行1列的矩阵
print np.dot(a,a.T) //a与a转置的乘积
assert(a.shape == (5,1)) //确认a的维度
a=a.reshape((5,1)) //将秩为1的数组转换成矩阵
2.激活函数
1)sigmoid激活函数
g`(z)=g(z)(1-g(z))
a.当z很大时,g(z)趋向于1,其导数趋向于0
b.当z很小时,g(z)趋向于0,其导数趋向于0
c.当z=0时,g(z)=1/2,其导数等于1/4
2)tanh激活函数
g`(z)=1-(tanh(z))^2
a.当z很大时,g(z)趋向于1,其导数趋向于0
b.当z很小时,g(z)趋向于-1,其导数趋向于0
c.当z=0时,g(z)=0,其导数等于1
3)ReLU激活函数
g`(z)=0 if z<0
1 if z>=0 (在应用中规定0处的导数为1,虽然在数学中不能这么说,因为z精确为0的概率很小,所以将0处的导数定义成什么值影响还是很小很小的)
4)带泄漏的ReLU激活函数
g(z)=max(0.01z,z)
当z<0时,g`(z)=0.01
3.神经网络的梯度下降法(只含一层隐藏层)
对于db^[2]处的理解:np.sum()对矩阵的一个维度求和,axis=1,说明是水平相加求和。keepdims,是防止python直接输出秩为1的数组