從零開始深度學習搭建神經網路(二)

2021-08-07 19:48:56 字數 1696 閱讀 4748

參考資料: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的神經網路就叫做深度神經網路,深度...