基於MATLAB的BP神經網絡預測計算GUI界面

2021-12-17 雲龍派

加載數據——輸入樣本數據個數、訓練數據個數、預測數據個數、中間層隱藏節點個數、網絡輸入維度、網絡輸出維度,x軸坐標名稱、y軸坐標名稱——點擊開始計算即可出現結果,同時會在當前文件夾下生成預測數據的excel文件和兩個圖片1.png、2.png。需要完整GUI程序,可以進行打賞後截圖(40元及以上),點擊公眾號「聯繫掌門」進行聯繫,或者在公眾號內回復截圖,幾小時內會回復。界面編程不易,還請見諒!

BP神經網絡的計算過程由正向計算過程和反向計算過程組成。正向傳播過程,輸入模式從輸入層經隱單元層逐層處理,並轉向輸出層,每~層神經元的狀態只影響下一層神經元的狀態。如果在輸出層不能得到期望的輸出,則轉入反向傳播,將誤差信號沿原來的連接通路返回,通過修改各神經元的權值,使得誤差信號最小。

雙極S形函數與S形函數主要區別在於函數的值域,雙極S形函數值域是(-1,1),而S形函數值域是(0,1)。

  由於S形函數與雙極S形函數都是可導的(導函數是連續函數),因此適合用在BP神經網絡中。(BP算法要求激活函數可導)

神經網絡實現步驟

1. 數據預處理 

       在訓練神經網絡前一般需要對數據進行預處理,一種重要的預處理手段是歸一化處理。下面簡要介紹歸一化處理的原理與方法。

(1) 什麼是歸一化? 

數據歸一化,就是將數據映射到[0,1]或[-1,1]區間或更小的區間,比如(0.1,0.9) 。

(2) 為什麼要歸一化處理? 

<1>輸入數據的單位不一樣,有些數據的範圍可能特別大,導致的結果是神經網絡收斂慢、訓練時間長。

<2>數據範圍大的輸入在模式分類中的作用可能會偏大,而數據範圍小的輸入作用就可能會偏小。

<3>由於神經網絡輸出層的激活函數的值域是有限制的,因此需要將網絡訓練的目標數據映射到激活函數的值域。例如神經網絡的輸出層若採用S形激活函數,由於S形函數的值域限制在(0,1),也就是說神經網絡的輸出只能限制在(0,1),所以訓練數據的輸出就要歸一化到[0,1]區間。

<4>S形激活函數在(0,1)區間以外區域很平緩,區分度太小。例如S形函數f(X)在參數a=1時,f(100)與f(5)只相差0.0067。

(3) 歸一化算法 

  一種簡單而快速的歸一化算法是線性轉換算法。線性轉換算法常見有兩種形式:

       <1>

y = ( x - min )/( max - min )

  其中min為x的最小值,max為x的最大值,輸入向量為x,歸一化後的輸出向量為y 。上式將數據歸一化到 [ 0 , 1 ]區間,當激活函數採用S形函數時(值域為(0,1))時這條式子適用。

       <2>

y = 2 * ( x - min ) / ( max - min ) - 1

       這條公式將數據歸一化到 [ -1 , 1 ] 區間。當激活函數採用雙極S形函數(值域為(-1,1))時這條式子適用。

(4) Matlab數據歸一化處理函數 

  Matlab中歸一化處理數據可以採用premnmx , postmnmx , tramnmx 這3個函數。

<1> premnmx

語法:[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t)

參數:

pn:p矩陣按行歸一化後的矩陣

minp,maxp:p矩陣每一行的最小值,最大值

tn:t矩陣按行歸一化後的矩陣

mint,maxt:t矩陣每一行的最小值,最大值

作用:將矩陣p,t歸一化到[-1,1] ,主要用於歸一化處理訓練數據集。

<2> tramnmx

語法:[pn] = tramnmx(p,minp,maxp)

參數:

minp,maxp:premnmx函數計算的矩陣的最小,最大值

pn:歸一化後的矩陣

作用:主要用於歸一化處理待分類的輸入數據。

<3> postmnmx

語法:[p,t] = postmnmx(pn,minp,maxp,tn,mint,maxt)

參數:

minp,maxp:premnmx函數計算的p矩陣每行的最小值,最大值

mint,maxt:premnmx函數計算的t矩陣每行的最小值,最大值

作用:將矩陣pn,tn映射回歸一化處理前的範圍。postmnmx函數主要用於將神經網絡的輸出結果映射回歸一化前的數據範圍。

2. 使用Matlab實現神經網絡 

使用Matlab建立前饋神經網絡主要會使用到下面3個函數:

newff :前饋網絡創建函數

train:訓練一個神經網絡

sim :使用網絡進行仿真

 下面簡要介紹這3個函數的用法。

(1) newff函數

<1>newff函數語法 

       newff函數參數列表有很多的可選參數,具體可以參考Matlab的幫助文檔,這裡介紹newff函數的一種簡單的形式。

語法:net = newff ( A, B, {C} ,『trainFun』)

參數:

A:一個n×2的矩陣,第i行元素為輸入信號xi的最小值和最大值;

B:一個k維行向量,其元素為網絡中各層節點數;

C:一個k維字符串行向量,每一分量為對應層神經元的激活函數

trainFun :為學習規則採用的訓練算法

<2>常用的激活函數

  常用的激活函數有:

  a) 線性函數 (Linear transfer function)

f(x) = x

  該函數的字符串為』purelin』。

 

b) 對數S形轉移函數( Logarithmic sigmoid transfer function )

    該函數的字符串為』logsig』。

c) 雙曲正切S形函數 (Hyperbolic tangent sigmoid transfer function )

  也就是上面所提到的雙極S形函數。

 

  該函數的字符串為』 tansig』。

  Matlab的安裝目錄下的toolbox\nnet\nnet\nntransfer子目錄中有所有激活函數的定義說明。

<3>常見的訓練函數

    常見的訓練函數有:

traingd :梯度下降BP訓練函數(Gradient descent backpropagation)

traingdx :梯度下降自適應學習率訓練函數

<4>網絡配置參數

一些重要的網絡配置參數如下:

net.trainparam.goal  :神經網絡訓練的目標誤差

net.trainparam.show   :顯示中間結果的周期

net.trainparam.epochs  :最大迭代次數

net.trainParam.lr    :學習率

(2) train函數

    網絡訓練學習函數。

語法:[ net, tr, Y1, E ]  = train( net, X, Y )

參數:

X:網絡實際輸入

Y:網絡應有輸出

tr:訓練跟蹤信息

Y1:網絡實際輸出

E:誤差矩陣

(3) sim函數

語法:Y=sim(net,X)

參數:

net:網絡

X:輸入給網絡的K×N矩陣,其中K為網絡輸入個數,N為數據樣本數

Y:輸出矩陣Q×N,其中Q為網絡輸出個數

function pushbutton1_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton1 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)global datatry    delete(allchild(handles.axes1));    delete(allchild(handles.axes2));endset(handles.text14,'string','正在訓練中');set(handles.uitable1,'data',data);warning off;samnum = str2num(get(handles.edit6,'string'));testsamnum =str2num(get(handles.edit7,'string'));forcastsamnum = str2num(get(handles.edit8,'string'));hiddenunitnum =str2num(get(handles.edit9,'string'));indim = str2num(get(handles.edit10,'string'));outdim =str2num(get(handles.edit11,'string'));str1 = get(handles.edit12,'string');str2 = get(handles.edit13,'string');hj=data;X=hj(1:samnum,outdim+1:end-1)';D=hj(1:samnum,outdim)';test=D;p = X;t = D;[samin,minp,maxp,tn,mint,maxt] = premnmx(p,t);rand('state',sum(100*clock))noisevar = 0.01;noise = noisevar*randn(1,samnum);samout = tn + noise;testsamin = samin;testsamout = samout;maxepochs = 50000;lr = 0.035;e0 = 0.65*10^(-3);w1 = 0.5*rand(hiddenunitnum,indim)-0.1;b1 = 0.5*rand(hiddenunitnum,1)-0.1;w2 = 0.5*rand(outdim,hiddenunitnum)-0.1;b2 = 0.5*rand(outdim,1)-0.1;errhistory = [];for i = 1:maxepochs    hiddenout = logsig(w1*samin+repmat(b1,1,samnum));    networkout = w2*hiddenout+repmat(b2,1,samnum);    error = samout-networkout;    sse = sumsqr(error);    errhistory = [errhistory sse];    if sse<e0           break;    end    delta2 = error;    delta1 = w2'*delta2.*hiddenout.*(1-hiddenout);    dw2 = delta2*hiddenout';    db2 = delta2*ones(samnum,1);    dw1 = delta1*samin';    db1 = delta1*ones(samnum,1);    w2 = w2+lr*dw2;    b2 = b2+lr*db2;    w1 = w1+lr*dw1;    b1 = b1+lr*db1;end

相關焦點

  • MATLAB基於BP神經網絡的光伏發電太陽輻照度預測
    MATLAB基於BP神經網絡的光伏發電太陽輻照度預測光伏發電功率主要受太陽輻照度影響,所以準確預測太陽輻照度對光伏功率預測十分重要
  • 【樹葉分類】基於BP神經網絡植物葉片分類Matlab代碼
    All inputs are passed to Processing_OpeningFcn via varargin.%%     *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one%     instance to run (singleton)".
  • BP神經網絡算法(附matlab程序)
    它是一種應用較為廣泛的神經網絡模型,多用於函數逼近、模型識別分類、數據壓縮和時間序列預測等。2) 隱層設計有關研究表明, 有一個隱層的神經網絡, 只要隱節點足夠多, 就可以以任意精度逼近一個非線性函數。因此, 本文採用含有一個隱層的三層多輸入單輸出的BP網絡建立預測模型。在網絡設計過程中, 隱層神經元數的確定十分重要。隱層神經元個數過多, 會加大網絡計算量並容易產生過度擬合問題; 神經元個數過少, 則會影響網絡性能, 達不到預期效果。
  • MATLAB 基於灰色神經網絡的預測算法研究—訂單需求預測
    MATLAB  神經網絡變量篩選—基於BP的神經網絡變量篩選灰色系統理論是一種研究少數據、貧信息、不確定性問題的新方法,它以部分信息已知
  • 【預測模型-ELAMN預測】基於蝗蟲算法優化ELMAN神經網絡實現數據回歸預測matlab代碼
    1 簡介風能,作為一種重要,有潛力,無汙染,可再生、可持續的能源,已經成為全球發電最為迅速的能源之一,越來越受到世界各國的青睞。
  • RBF神經網絡(Matlab)
    RBF神經網絡採用多維空間插值擬合技術,與BP誤差反饋神經網絡不同的是:1、無誤差反饋過程且通過最小二乘計算出權值;2、輸入層為各樣本與聚類中心的距離
  • 【lstm預測】基於粒子群算法改進的lstm預測matlab源碼
    收錄於話題 #神經網絡預測matlab源碼 175個
  • 【技術 | 神經網絡在Matlab上的簡單實現(一)】
    和之前說過的模糊控制類似,神經網絡也是通過已有輸入來判別或預測輸出的數學模型。與模糊控制不同的是,神經網絡的數學模型不是由經驗設定,而是計算機通過數據投餵自行習得的。這意味著哪怕電腦面前的你對神經網絡學科知識一無所知,建立一個可靠的模型也是有可能的。
  • 基於LSTM與傳統神經網絡的網絡流量預測及應用
    】提出了一個基於長短期記憶循環神經網絡與傳統神經網絡的網絡流量預測模型。基於LSTM與傳統神經網絡的網絡流量預測及應用[J]. 移動通信, 2019,43(8): 37-44.1   引言網絡流量的建模和預測是研究網絡的性能、管理、協議及服務質量的基礎,對網絡的規劃設計具有重要意義。精準地預測網絡流量變化對提高網絡穩定性,提升用戶體驗,節省運營商成本等具有重要意義。
  • 基於BP神經網絡的水體葉綠素a濃度預測模型優化研究(​葛金金,彭文啟等)(P-755)
    葉綠素a預測模型中,思維進化算法採取如下步驟進行。(1)映射編碼。依據 BP神經網絡拓撲結構,映射解空間到編碼空間,編碼長度S 由神經網絡各層神經元數目確定,記為S=n×K+2K+1;其中,n 為神經網絡輸入層神經元數,即葉綠素a含量相關因子數目,K 為隱含層神經元數目。(2)初始種群生成。
  • MATLAB繪製區域圖形
    MATLAB求解混合整數線性規劃電子書推薦(一)《MATLAB在數學建模中的應用》matlab GUI實現導入txt文件(含字符和數據的文本)matlab 畫圖——誤差條圖errorbar函數(含視頻講解)matlab多項式(定義、四則計算、求根)Matlab中繪製不同坐標的圖形Matlab 多項式擬合函數關係
  • 神經網絡-BP神經網絡
    感知器作為初代神經網絡,具有簡單、計算量小等優點,但只能解決線性問題。BP神經網絡在感知器的基礎上,增加了隱藏層,通過任意複雜的模式分類能力和優良的多維函數映射能力,解決了異或等感知器不能解決的問題,並且BP神經網絡也是CNN等複雜神經網絡等思想根源。
  • BP神經網絡與matlab實例詳解(一)
    BP神經網絡是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播算法訓練的多層前饋神經網絡,是應用最廣泛的神經網絡。它的基本思想是梯度下降法,利用梯度搜索技術,以期使網絡的實際輸出值和期望輸出值的誤差均方差為最小。
  • BP神經網絡在混凝土材料研究中的應用
    圖2 BP神經網絡結構示意圖 BP神經網絡的基本計算流程如圖3所示,具體包括輸入信息正向傳播和輸出誤差反向傳播兩個過程。圖7 利用BP神經網絡預測的坍落度與實際實驗結果的對比金南國等基於人工神經網絡理論分別從兩方面建立了混凝土孔結構與強度關係模型,提出了BP神經網絡應用於分析混凝土孔結構與強度關係的可行性,驗證了其準確性與有效性,並建立由平均分布孔徑和4個不同孔級的分孔隙率預測混凝土28d抗壓強度值BP網絡模型。
  • 美團技術團隊|基於神經網絡StarNet的行人軌跡交互預測算法
    在此過程中,美團無人配送團隊也取得了一些技術層面的突破,比如基於神經網絡StarNet的行人軌跡交互預測算法,論文已發表在IROS 2019。IROS 的全稱是IEEE/RSJ International Conference on Intelligent Robots and Systems,IEEE智慧機器人與系統國際會議,它和ICRA、RSS並稱為機器人領域三大國際頂會。
  • 乾貨拿走:MATLAB人工神經網絡教程
    (GUI APP)你可以通過鍵入命令 nnstart 來打開神經網絡的啟動圖形界面。進入啟動界面後,可以通過單擊模式識別工具來打開神經網絡模式識別工具。你也可以通過命令 nprtool 來直接打開它。單擊歡迎頁面上的「Next」(下一步),進入「Select Data」(數據選擇)界面。選擇Xtrain作為輸入,Ytrain為訓練目標。
  • MATLAB人工神經網絡教程
    (GUI APP)你可以通過鍵入命令 nnstart 來打開神經網絡的啟動圖形界面。進入啟動界面後,可以通過單擊模式識別工具來打開神經網絡模式識別工具。你也可以通過命令 nprtool 來直接打開它。單擊歡迎頁面上的「Next」(下一步),進入「Select Data」(數據選擇)界面。選擇Xtrain作為輸入,Ytrain為訓練目標。
  • 「人工神經網絡」人工神經網絡之BP算法
    人工神經網絡(Artificial Neural Network,ANN)是在受到了生物學的啟發後創建的,在某種程度上它是對生物大腦的一種模擬。人們仿照生物神經網絡的結構,使用簡單運算單元模擬神經元,並將大量運算單元按某種形式密集連接,便構成了人工神經網絡。結構如圖:人工神經網絡(ANN)模型帶有權重值(w1,w2,...
  • 【圖像識別】基於卷積神經網絡CNN手寫數字識別matlab代碼
    ,提出了一種新的手寫數字識別檢測方法.首先,對採集的手寫數字圖像進行預處理,由於原始圖像包含各種各樣的噪聲,為了防止造成幹擾,對圖像進行去噪,濾波等處理;然後,在MATLAB中構建卷積神經網絡(cNN)模型結構,採用CNN模型中典型的LeNET-5的卷積模型,通過對採集圖像進行逐層學習,訓練與測試,將學習得到的高層特徵用於手寫數字識別.以隨機手寫數字與字母進行圖像驗證,結果表明,該模型算法應用於手寫數字或字母準確識別
  • MATLAB處理NAN數據程序(含實例)
    中矩陣的入門知識MATLAB的輸入輸出input函數Matlab對fig文件導出數據matlab多項式(定義、四則計算、求根)MATLAB的switch選擇語句和input輸入語句視頻講解MATLAB的switch選擇語句和input輸入語句matlab中的歸一化處理的三種方法MATLAB求函數的導數和偏導