BP網路數字識別

2021-08-19 23:18:56 字數 2430 閱讀 1767

importnumpyasnp

fromsklearn.datasetsimportload_digits

fromsklearn.preprocessingimportlabelbinarizer

fromsklearn.cross_validationimporttrain_test_split

defsigmoid(x):

return1/(1+np.exp(-x))

defdsigmoid(x):

returnx*(1-x)

classneuralnetwork:

def__init__(self,layers): #(64,100,10)

#權值的初始化,範圍-1到1

self.v=np.random.random((layers[0]+1,layers[1]+1))*2-1

self.w = np.random.random((layers[1] + 1, layers[2])) * 2 - 1

deftrain(self,x,y,lr=0.11,epochs=10000):

#新增偏置

temp=np.ones([x.shape[0],x.shape[1]+1])

temp[:,0:-1]=x

x=temp

forninrange(epochs+1):

i=np.random.randint(x.shape[0])#隨機選取乙個資料

x=[x[i]]

x=np.atleast_2d(x) #轉為2維資料

l1=sigmoid(np.dot(x,self.v)) #隱藏層輸出

l2=sigmoid(np.dot(l1,self.w)) #輸出層輸出

l2_delta=(y[i]-l2)*dsigmoid(l2)

l1_delta=l2_delta.dot(self.w.t)*dsigmoid(l1)

self.w+=lr*l1.t.dot(l2_delta)

self.v+=lr*x.t.dot(l1_delta)

#每訓練1000次**一次準確率

ifn%1000==0:

predictions=

forjinrange(x_test.shape[0]):

o =self.predict(x_test[j])

accuracy =np.mean(np.equal(predictions,y_test))

print('epoch:',n,'accuracy:',accuracy)

defpredict(self,x):

#新增偏置

temp=np.ones(x.shape[0]+1)

temp[0:-1]=x

x=temp

x=np.atleast_2d(x) #轉為2維資料

l1=sigmoid(np.dot(x,self.v)) #隱藏層輸出

l2=sigmoid(np.dot(l1,self.w)) #輸出層輸出

returnl2

digits =load_digits() #載入資料

x=digits.data #資料

y=digits.target #標籤

#輸入歸一化

x-=x.min()

x/x.max()

nm=neuralnetwork([64,100,10]) #建立網路

x_tain,x_test,y_train,y_test=train_test_split(x,y) #分割資料1/4測試,3/4訓練

labels_train=labelbinarizer().fit_transform(y_train) #標籤二值化

labels_test =labelbinarizer().fit_transform(y_test)

print('start')

nm.train(x_tain,labels_train,epochs=20000)

print('end')

基於BP神經網路的數字識別

bp back propagation 表示反向傳播。bp網路能學習和存貯大量的輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學 方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。bp神經網路模型拓撲結構包括輸入層 input 隱層 hi...

人工智慧 BP神經網路(數字識別)

摘要 構造乙個三層的 bp 神經網路,完成手寫 0 9 數字的識別。設計網路的結構,比如層數,每層的神經元數,單個神經元的輸入輸出函式 根據數字識別的任務,設計網路的輸入和輸出 實現 bp 網路的錯誤反傳演算法,完成神經網路的訓練和測試,最終識別率達到 70 以上 bp 演算法思想流程 初始化輸入訓...

模式識別演算法 BP網路設計

bp網路能學習和存貯大量的輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的 誤差平方和 最小。bp神經網路 模型拓撲結構包括輸入層 input 隱層 hide layer 和輸出層 output laye...