以前編寫的對貓的識別的算法準確率仍然不是很高,主要是由於其是單神經元網絡,太過簡單,層數過低。git
神經網絡分爲單神經元和多神經元,多神經元神經網絡又分爲淺層和深層,下面介紹一下多神經元網絡中的若干概念。github
多神經元網絡流程是同單神經元網絡相同的,只不過層數更多。下面是一個多神經元神經網絡,其中間多了一層,但實際中可能遠不止一層:算法
先來複習一下以前學過的單神經元神經網絡:markdown
運算流程:網絡
再來對比一下多神經元網絡,咱們把多神經元網絡單個拆分紅一個一個單獨的神經元來看:框架
其具體運算流程以下:oop
咱們先算出第一層(不帶輸入層)的3個神經元的a=\sigma(z),而後再將這3個a當作x輸入到第二層的神經元中進行計算。上面的w^{[i]}表示的是第一層的神經元關於輸入層x的權重,因此w^{[i]}是一個33的矩陣,由於第一層有3個神經元,每個神經元都有3個特徵輸入,共計33。性能
反向傳播計算也同樣,先算出第二層的梯度dw和db,而後再向第一層傳播,算出第一層3個神經元的dw和db。學習
像神經網絡的層數、每層神經元的個數都是超參數,和前面提到的學習率同樣,須要慢慢調才能找到一個最合適的值,調的方式大概有幾種:spa
其實最主要用到的仍是手動調參,不一樣的項目背景下有不一樣的原則,建議從一個較小數值開始,如 果欠擬合而後慢慢添加更多的層和神經元,若是過擬合就減少層數和神經元。
\