搭建淺層神經網路模型步驟總結

2021-10-03 05:37:32 字數 1203 閱讀 4248

1. 構建資料集

2. 初始化4個變數

- 確定樣本個數

- 輸入層神經元的個數 (樣本的特徵個數)

- 隱藏層神經元的個數

- 輸出層神經元的個數

3. 網路引數w和b的初始化
其中,神經網路的層數(除輸入層)決定初始化引數w和b的對數。(此處以2層為例);

各引數的shape總結如下:

注意:初始化賦值時,b 一般全部初始化為 0 即可,但是 w 不能全部初始化為 0,初始化的方法是使用numpy.random.randn()方法隨機生成。

4. 正向傳播 (fp)

正向傳播的過程分為線性部分和非線性部分,其目的是求神經網路模型的**值y。線性部分結果表示為z[1],z[2],非線性部分結果表示為a[1],a[2];非線性也可理解為啟用函式(af),常見的啟用函式有4種:

- sigmoid 函式

- tanh 函式

- relu 函式

- leaky relu 函式

注意:常用的啟用函式選擇方法是:隱藏層選擇tanh函式,輸出層選擇sigmoid 函式;

5. 損失函式

通過正向傳播來計算損失函式,其目的是求解真實的y值與**的y值的差距;首先得確定損失函式的選擇,常見的損失函式有以下三種:

- hinge loss(支援向量機損失函式)

- softmax(互熵損失函式)

- cross entropy(交叉熵損失函式)

根據選擇的損失函式計算最終的損失值,損失值越小模型越好。即下一步需要對損失函式最優化,使得損失值最小。

6. 反向傳播 (bp)

通過鏈式法則對損失函式求一階偏導,再代入具體值求d(w1),d(b1),d(w2),d(b2)。

7. 根據梯度下降法對網路引數進行更新

根據反向傳播的結果更新w1,b1, w2, b2。由梯度下降法更新的具體公式如下所示:   

w1 = w1 - n * d(w1)

b1 = b1 - n * d(b1)

w2 = w2 - n * d(w2)

b2 = b2 - n * d(b2)

其中,n稱學習率(學習因子),計算前應適當地給n乙個值。

8. 迴圈迭代

從步驟4開始迴圈迭代,直到損失函式達到最小或者迭代次數達到上限。

神經網路學習(十)淺層BP神經網路總結

系列部落格是博主學習神經網路中相關的筆記和一些個人理解,僅為作者記錄筆記之用,不免有很多細節不對之處。我的這一階段目標是在學習完淺層bp神經網路的相關知識時,可以將手寫字的識別率達到98 在前面的幾次實驗中,mnist手寫字的識別率始終未達到98 以上,這樣的結果是有些讓人沮喪的。今天進過艱苦奮鬥,...

淺層神經網路 2

搭建乙個神經網路時,你可以選擇隱藏層中或者輸出層中使用什麼啟用函式 actuation function 到目前為止,我們一直使用的是sigmoid函式,但其他函式效果會更好。在實際訓練中,有個函式表現總是比sigmoid好,叫tanh 雙曲正切函式 它的輸出是 1,1 從數學上,它其實是sigmo...

搭建神經網路模型

簡單例子 先說模型搭建,後面發布模型訓練,最後模型 分類 in channel 輸入彩色為3 out channel 卷積核個數 一般與層數相同 kernel size 卷積核大小 stride 1 padding 0 self.conv1 nn.conv2d 3,6,5 16個卷積核,大小尺寸為 ...