Python神經網路搭建(1)

2021-10-24 13:40:15 字數 2691 閱讀 9630

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 於生物體的神經系統,是一組連線的輸入 輸出單元,每個連線都與乙個權重相關聯。神經網路模式可以學習資料的特點,訓練的資料不同,產生的模型不同。應用場景 不知道用什麼數學模型合適 知道應用什麼模型但不知道模型複雜度時可以使用。比如要做分類問題,但屬於非線性的切分...