自己動手製作人工神經網路0x1:初始化部分
說在前面
從這裡開始,我假定你們已經知道ANN是啥玩意。
目標
首先,明確我們的目標。我們將構建一個具有一個隱藏層的ANN。
所有層之間的關係都是全連線,並且使用sigmoid作為啟用函式。
隱含層 h=sigmoid(i*wih+bih)
輸出層 o=sigmoid(h*who+bho)
一個輸入,隱藏,輸出層節點數都為3的網路
Coding
P1:初始化
首先,匯入所需的庫。我們需要numpy幫助完成矩陣運算。也需要scipy庫簡化實現啟用函式的程式碼量。
import numpy as npimport scipy.special
然後建立一個類,方便操作,類名就叫ANN吧
class ANN: """ Artificial Neural Networks """ pass
接著給ANN類,我們的神經網路編寫初始化函式。
初始化的引數有輸入層節點個數(inputNodes),隱藏層節點個數(hiddenNodes),輸出層節點個數(outputNodes),還有學習速率(learningRate)
在初始化函式里,順便建立兩個矩陣(wio, who)。np.random.normal()會返回一個已經按正態分佈初始化的矩陣,第一個引數為分佈中心,第二個引數為標準方差,第三個引數是陣列大小。
最後設定啟用函式(a_f(x))為scipy.special.expit(x),expit()就是sigmoid函式,他可以使我們節點的輸出更絲滑。
def __init__(self, inputNodes, hiddenNodes, outputNodes, learningRate): self.iN = inputNodes self.hN = hiddenNodes self.oN = outputNodes self.lr = learningRate self.wih = np.random.normal(0.0, pow(self.hN, -0.5), (self.hN, self.iN)) self.who = np.random.normal(0.0, pow(self.oN, -0.5), (self.oN, self.hN)) self.a_f = lambda x: scipy.special.expit(x)
這樣,便完成了初始化的部分,為接下來的工作打下基礎。
作者:御史神風
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3016/viewspace-2811945/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【自己動手寫神經網路】---人人都可以學的神經網路書神經網路
- 自己動手實現神經網路分詞模型神經網路分詞模型
- 神經網路初始化神經網路
- 神經網路:numpy實現神經網路框架神經網路框架
- 神經網路神經網路
- 【機器學習】動手寫一個全連線神經網路(一)機器學習神經網路
- 訓練自己的Android TensorFlow神經網路Android神經網路
- 神經網路入門 第二部分神經網路
- LSTM神經網路神經網路
- 8、神經網路神經網路
- BP神經網路神經網路
- 模糊神經網路神經網路
- 使用神經網路識別手寫數字神經網路
- 聊聊從腦神經到神經網路神經網路
- 圖神經網路GNN 庫,液體神經網路LNN/LFM神經網路GNN
- 神經網路入門 第一部分神經網路
- 欺騙神經網路:建立你自己的對抗樣本神經網路
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 【神經網路篇】--RNN遞迴神經網路初始與詳解神經網路RNN遞迴
- AI BP神經網路判斷手寫數字AI神經網路
- 卷積神經網路卷積神經網路
- 迴圈神經網路神經網路
- 人工神經網路(ANN)神經網路
- 生成型神經網路神經網路
- 機器學習整理(神經網路)機器學習神經網路
- 神經網路入門神經網路
- 神經網路權值為什麼不能初始化為零(1)神經網路
- 為什麼說BP神經網路就是人工神經網路的一種?神經網路
- 簡述脈衝神經網路SNN:下一代神經網路神經網路
- 神經網路入門篇:詳解隨機初始化(Random+Initialization)神經網路隨機random
- 神經網路的初始化方法總結 | 又名“如何選擇合適的初始化方法”神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 迴圈神經網路(RNN)神經網路RNN
- 白話深度神經網路神經網路
- 初識神經網路----一神經網路
- 淺析模糊神經網路神經網路
- 卷積神經網路概述卷積神經網路