构建深度神经网络,做图像处理
整个训练的流程图
(1)参数初始化
两层神经网络,随机初始化w,0初始化b,记住w和b的形状,无论网络如何变化,形状的公式是不变的w[l].shape=(n[l],n[l-1]),b[l].shape=(n[l],1)
具体公式
(2)前向传播
在前向传播时,计算z时,可以适当打印w,b的形状,这将有助于查找错误。
前向传播与激活函数sigmoid,relu
前向传播的组合
(3)损失函数
计算损失函数时,需要查看Y与AL的形状,需要知道哪些地方使用的是矩阵相乘np.dot,哪些又是对应元素相乘* or np.multiply
(4)反向传播
反向传播利用那6个公式进行书写,其中需要用到前向传播过程中存入缓存的z。
利用上述公式编写程序,此处dZ为随机数输入。
之前一直没搞懂的dz求解,现在才搞懂,原来就是一个简单的链式法则,公式如下:
组合
完整的反向传播过程:
需要注意反向传播是从最后层开始的,然后倒数第二层等等,每一步的参数不要用错了哦!
(5)更新参数
利用之前的函数得到的梯度值再加上学习率来更新参数。
小结:
整个神经网络,从前到后,再从后到前,从前到后前向传播就是正常的函数计算,线性函数与激活函数互相掺杂使用,最后一层根据需求,分类的会使用sigmoid或softmax,回归的会使用linar,直到最后输出yhat也叫AL,随后计算损失函数cost,并利用求导公式,发现传播,计算每一层的da,dz,dw,db,因为公式是现有的,只需要根据公式把代码写出来好了,其中需要注意的是有些地方是矩阵相乘,而另一些地方只是简单的元素相乘,使用函数时需要分清哦!