←前一篇 後一篇→
前兩篇紹介微分和梯度, 閣有 in 按怎收縮(convergence), 去揣著上細值梯度法, 是為著這篇做準備个: 透過梯度法, 共損失函式收縮到接近 0.
若按呢生, 伊的流程是:
- 先決定欲偌濟神經元, 幾棧
- 先予權重 (W) 和 B 一个初值. 普通這是用隨機 (random) 方式來起頭
- 用細批个資料, 來算出伊的損失函式 (loss function) 值.
- 計算損失函式佇彼的值的梯度, 伊會顯示行佗一个方向, 損失函式會減上濟
- 共權重(W) 換新算出來, 閣轉去 3, 4, 5, 重複運算, 一直到滿意的答案, 抑就是損失函式足倚零足倚零, 到咱會接受个戶橂.
下面, 咱若看若參考: two_layer_net.py
先決定欲偌濟神經元, 幾棧, 起頭的值
two_layer_net.py 內底, __init__() 就是定義這个神經網路: 伊是兩棧ê神經網路:咱直接揤頂仔彼咧連結, 去看 __init__(), 伊用 numpy ê randomn 函式來生出一个陣列, numpy 个簡介, 會用參考遮. 伊个大細, 是呼(khoo)个人, 佇呼 ê 時陣交代落來个.
伊會用 Python 字典 (dictionary) 這種資料型態.
因為 x 是輸入, 佇 __init__() 是定義 W1, b1, W2, b2.
input_size 是 x 的數目. hidden_size 是中方彼棧个數目。
W1 个大細是(橫, 直) (input_size, hidden_size) 个陣列.
W2 个大細是(橫, 直) (hidden_size, output_size) 个陣列.
這就是頂懸講个第二步.
計算損失函式
計算損失函式進前, 愛先根據一組輸入,來算出輸出, 這是進前介紹過个 predict(), 也就是真正行這个 predict() 函式:
就是這个 函式:
這是頂懸个第三步.
計算伊的梯度
咱小看一下:numerical_gradient() 這个函式, 現此時, 伊是囥佇 common/gradient.py 內面, 咱用 import 共伊搝--入來這馬个文本 (context), 按呢隨時就會使用. 咱佇遮有介紹. 咱共 W1, b1, W2, b2 个梯度攏算--出來.
這是頂懸个第四步.
以上 4 步, 佇 two_layer_net.py 是寫做一个 class 个樣, 是成做一个予人呼个 Má-tsìo (module). 準備予 train_neuralnet.py 使用!
train_neuralnet.py 就是 1, 2, 3, 4, 5 个步數个實作。
咱佇下一篇來行看覓咧!
沒有留言:
張貼留言