1、首先匯入numpy庫和scipy庫
scipy.special裡呼叫自啟用函式
import numpy
import scipy.special
2、初始化網路
設定輸入層節點、隱藏層節點和輸出層節點的數量及學習率利用lambda建立匿名函式
class
neuralnetwork
:def
__init__
(self, inputnodes, hiddennodes, outputnodes, learningrate)
: self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
self.lr = learningrate
self.activation_function =
lambda x:scipy.special.expit(x)
pass
3、權重部分
網路中最重要的部分,可利用權重計算前饋訊號、反向傳播誤差,並且在試圖改進網路時優化鏈結權重本身
self.wih = numpy.random.normal(
0.0,
pow(self.hnodes,
-0.5),
(self.hnodes, self.inodes)
) self.who = numpy.random.normal(
0.0,
pow(self.onodes,
-0.5),
(self.onodes, self.hnodes)
)
4、訓練網路
針對給定的訓練樣本計算輸出,並將計算機得到的輸出與所需輸出作差,進一步指導網路權重的更新
def
train
(self, inputs_list, targets_list)
: inputs = numpy.array(inputs_list, ndmin =2)
.t # 轉化輸入為二維矩陣
targets = numpy.array(targets_list, ndmin =2)
.t hidden_inputs = numpy.dot(self.wih, inputs)
# 輸入層點乘wih權重
hidden_outputs = self.activation_function(hidden_inputs)
# s函式接受訊號
final_inputs = numpy.dot(self.who, hidden_outputs)
final_outputs = self.activation_function(final_inputs)
output_errors = targets - final_outputs0
hidden_errors = numpy.dot(self.who, output_errors)
self.who += self.lr * numpy.dot(
(output_errors * final_outputs *
(1.0
- final_outputs)
), numpy.transpose(hidden_outputs)
) self.wih += self.lr * numpy.dot(
(hidden_errors * hidden_outputs *
(1.0
- hidden_outputs)
), numpy.transpose(inputs)
)pass
5、查詢網路
接收神經網路的輸入,返回網路的輸出這時候就用到我們在初始化階段建立的匿名函式了
def
query
(self, inputs_list)
: inputs = numpy.array(inputs_list, ndmin =2)
.t # 轉化輸入型別
hidden_inputs = numpy.dot(self.wih, inputs)
# 更新后權重點乘輸入層-隱藏層
hidden_outputs = self.activation_function(hidden_inputs)
# s函式獲取隱藏層訊號
final_inputs = numpy.dot(self.who, hidden_outputs)
# final_outputs = self.activation_function(final_inputs)
#return final_outputs
以上**可用於建立、訓練和查詢三層神經網路,幾乎可以進行任何任務。
如果想進一步擴大神經網路的規模,可以把權重部分寫的更細緻一點。
大家加油! 搭建神經網路
1.import 2.train,test 3.model tf.keras.model.sequential 在sequential中描述網路結構,相當於走一遍前向傳播 4.model.compile 在compile中配置訓練方法,選擇哪個優化器,選擇什麼損失函式,選擇什麼評價指標 5.mode...
神經網路 python實現神經網路
神經網路系列目錄 神經網路 神經網路原理介紹 bp演算法 神經網路 sklearn引數介紹及應用 神經網路實戰 主播綜合評分回歸 實戰 最小二乘法 梯度下降法區別及python實現 本篇博文通過python 實現神經網路,採用sklearn自帶的手寫數字集,看分類情況如何 一 匯入資料集並標準化 資...
神經網路(1)
一 什麼是神經網路 神經網路模型 knn 於生物體的神經系統,是一組連線的輸入 輸出單元,每個連線都與乙個權重相關聯。神經網路模式可以學習資料的特點,訓練的資料不同,產生的模型不同。應用場景 不知道用什麼數學模型合適 知道應用什麼模型但不知道模型複雜度時可以使用。比如要做分類問題,但屬於非線性的切分...