參考資料:coursera的andrewng deeplearning.ai課程
github: 中的hidden_func.py中
通過上一次的學習,我們已經能夠完成乙個簡單的神經網路,但如此簡單的神經網路在進行學習的時候準確率有限,因為每一次學習都相當於在圖中分割一刀,
紅藍之間的分類顯然不是一刀可以解決的問題,所以我們需要新增隱藏層,即在輸入和輸出之間新增一層進行處理。
沒有隱藏層分類結果:
所以我們需要新增隱藏層,結果就是新增了乙個中間層,進行一次處理,對映房成為tanh:
對於輸入x來說,可以經過多個層:
第一層輸出:
z1= w1 * x + b1
a1= tanh(z1)
z2= w2 * x + b2
y= a2 = sigmoid(z2)
y依舊採取上一次的策略(**中),如果大於0.5就是1,小於0.5就是0(sigmoid對映範圍為0到1)。
損失函式j也比較好算:
j= -1/m * sum(y * log(a2) + (1 - y) * log(1 – a2))
所以對各個引數的規格應該也有乙個了解,
w1 --- weight matrix of shape (n_h, n_x)
b1 --- bias vector of shape (n_h, 1)
w2 --- weight matrix of shape (n_y, n_h)
b2 --- bias vector of shape (n_y, 1)
注意,w1、w2都採用隨機初始化的方式,防止相同的起點有相同的結果,如果隨即開始,也容易快速下降,諸如遺傳演算法、遺傳程式設計等諸多演算法都採用隨機淘汰生成。
這個是邏輯回歸的dz公式,所以繼續推導可得:
所以通過之間的公式:
theta = theta – learning_rate * dtheta
可以得到新的引數列表,即更新後的w和b(w1\w2\b1\b2)。
然後迭代多次,得到最終結果後**。
注:可能對tanh不太了解,其實如sigmoid方程的選取一樣,有很多方程都是可選擇的:
僅供個人學習使用,方便日後複習。
從零開始深度學習搭建神經網路(一)
人工智慧不神秘,會一點加減乘除就夠了。對於神經元來說,當神經受到刺激的時候,會釋放神經遞質傳給下乙個神經元,不同程度的刺激對下乙個神經元釋放的神經遞質的量也不同,所以模仿這個過程建立神經網路 當輸入乙個資料x的時候,模擬輸入乙個外界刺激,經過處理後,輸出的結果為f x 把這個f x 傳給下乙個神經元...
從零開始搭建深度學習環境
開始深度學習調參之路不能沒有乙個趁手的環境 安裝基礎環境 我使用的機器環境是 ubuntu18.04 安裝顯示卡驅動 1.2.按照cuda所需的版本安裝 3.sudo ubuntu drivers autoinstall 安裝pip sudo apt get install python pip 安...
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...