单层神经网络的参数:w[1] ,b[1] ,w[2] ,b[2]
以及还包括n[0]个输入特征,n[1]个隐藏单元,n[2]个输出单元
矩阵w[1]的维度是( n[1],n[0] ), b[1]的维度是( n[1],1 ),w[2]的维度是( n[2],n[1] ),b[2]的维度是( n[2],1 )
成本函数 J(w[1] ,b[1] ,w[2] ,b[2] )= 1/m Σ L( a[2] , y )
在训练神经网络时,随机初始化参数很重要
repeat {
dw[1] = dJ / dw[1] , db[1] = dJ / db[1]
w[1] = w[1] — αdw[1]
b[1] = b[1] — αdb[1]
w[2] = w[2] — αdw[2]
b[2] = b[2] — αdb[2]
} //这是梯度下降的一次迭代循环
正向传播过程:
z[1] = w[1]x + b[1]
A[1] = g[1]( z[1] )
z[2] = w[2]x + b[2]
A[2] = g[2]( z[2] ) = σ( z[2] )
反向传播过程:
dz[2] = A[2] - Y
dw[2] = 1/m dz[2]A[1]T
db[2] = 1/m np.sum( dz[2] , axis = 1 , keepdims = True ) //这是python中用来对矩阵的一个维度求和,axis=1是指水平方向求和,而再加上
keepdims就是防止python直接输出这些古怪的秩为1的数组。确保python输出的是矩
阵,对于db[2]这个向量输出的维度是(n,1)
dz[1] = w[2]Tdz[2] * g[1] ' ( z[1] ) //g[1] ' 是导数
dw[1] = 1/m dz[1] xT
db[1] = 1/m np.sum( dz[1] , axis = 1 , keepdims = True )