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

2021-06-25 12:37:33 字數 2224 閱讀 7792

bp(back propagation)表示反向傳播。bp網路能學習和存貯大量的輸入-輸出模式對映關係,而無需事前揭示描述這種對映關係的數學

方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。bp神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。

圖1 三層bp網

如圖所示,最下面一層為輸入層,中間為隱藏層,最上面為輸出層。其中x=,y=,o=為向量,w、v為權值矩陣,v的行的數目跟y的長度相等,v的列的數目跟x的長度相等。w的行的數目跟o的長度相等,w的列的數目跟y的長度相等。

對於低層到高層的每乙個節點,做如下的運算:

圖2 sigmoid閾值單元

x1,x2....xn表示該層的輸入,比如在輸入層到隱藏層中,它們表示圖1中的x0,x1.....xn;在隱藏層到輸出層,它們表示y0,y1.....ym。w1,w2...wn表示該層的權值,並不只對應圖1中的w。

之所以用sigmoid函式,原因如上圖所示。它的導數可以用它的輸出表示,這樣在求梯度的時候很容易計算,而且這個函式與感知器相似。

bp神經網路的原理就是不斷的訓練,不停地去改變w和v的權值,然後把期望的結果可輸出的o比較,當誤差收斂到一定範圍就可以終止訓練。

影象需要進行一定的處理:灰度轉化->二值化->影象銳化->去除雜訊->歸一化

灰度轉化和二值化可參考:

影象銳化和去除雜訊可以通過濾波來解決,具體過程搜尋一下。

歸一化就是把影象調整到固定大小。我是用5x5的矩陣來儲存歸一化後的影象。比如5可以用

表示。即:

輸入為一定數量的5x5的矩陣,可以用乙個長度為25的向量表示,所以輸入層長度為25,隱藏層的節點數不一定,通常可以用(n+1)的1/2次方+a算出(n表示輸入的向量的長度,a可以取0~輸出向量的長度之間的數),我的隱藏層使用15個節點。

訓練演算法如下:

**實現如下:

for (int j = 0; j < y.count(); j++)

for (int k = 0; k < o.count(); k++)

for (int k = 0; k < o.count(); k++)

for (int h = 0; h < y.count(); h++)

errortermh[h] = y[h] * (1 - y[h]) * sum;

}for (int j = 0; j < w.getlength(0); j++)

}for (int j = 0; j < v.getlength(0); j++)

}

**中的w、v、o、x、y分別對應圖1中的相應向量和矩陣。

sigmoid函式和net函式定義如下:

private double sigmoid(double x)

private double net(int j,double[,] v, double x)

return sum;

}

同樣的樣本也需要多次訓練。

我用10個代表0~9的矩陣不停的訓練,輸出的o的值如下圖所示:

可以看出,o[8]的值最大,接近1,接近期望輸出的向量,代表該數字為8.

當然,訓練的時候肯定不能用乙個樣本訓練,需要輸入很多樣本,通常需要進行上千次訓練,每個樣本可以參與多次訓練。

當輸出與期望輸出的誤差收斂到一定範圍,就可以停止訓練。

把需要識別的影象處理成5x5的矩陣,輸入到bp網路中,輸出矩陣o,o中值最大的那個元素的位置即為識別出的數字。但是如果o中最大的值小於一定的閾值,可以判斷為無法判斷。

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

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

BP神經網路(基於MATLAB)

clc clear all 匯入資料 load s data.mat s含量所用資料 n 12 n 是自變數的個數 m 1 m 是因變數的個數 讀取訓練資料 train num 1600 訓練樣本數 train data s data 1 train num,特徵值歸一化 train input,m...

基於BP神經網路的分類

使用的是乙個簡單的資料集fisheriris,該資料集資料類別分為3類,setosa,versicolor,virginica。每類植物有50個樣本,共150個樣本代表150朵花瓣。每個樣本有4個屬性,分別為花萼長,花萼寬,花瓣長,花瓣寬。其中meas是150 4的矩陣代表著有150個樣本每個樣本有...