BP神經網絡與matlab實例詳解(一)

2022-01-01 數模樂園

BP神經網絡是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播算法訓練的多層前饋神經網絡,是應用最廣泛的神經網絡。它的基本思想是梯度下降法,利用梯度搜索技術,以期使網絡的實際輸出值和期望輸出值的誤差均方差為最小。

BP神經網絡由輸入層、隱含層、輸出層三大層組成,其中隱含層可以為一層或多層。隱含層內的神經元與外界沒有直接的聯繫,但其狀態的改變能影響輸入和輸出之間的關係。

MATLAB中可以實現BP神經網絡預測,只要通過輸入輸入層神經元,及設定隱含層層數、節點數及預測精度的控制要求就可以實現預測。它的原理實際上是分析輸入神經元與輸出神經元的非線性關係,這就要求輸出項參數實際上是與輸入項參數需要具有一定的關聯性。

PR:由R維的輸入樣本最小最大值構成的R*2維矩陣。

[S1S2...SN]:各層的神經元個數。

{TF1 TF2 ...TFN}:各層的神經元傳遞函數。

BTF:訓練用函數的名稱。

(2)網絡訓練

舉例1

雙輸入單輸出五組樣本 網絡結構是2-5-1

%traingd

clear;

clc;

P=[-1 -1 2 2 4;0 5 0 5 7];

T=[-1 -1 1 1 -1];

%利用minmax函數求輸入樣本範圍

net = newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');

net.trainParam.show=50;%

net.trainParam.lr=0.05;

net.trainParam.epochs=300;

net.trainParam.goal=1e-5;

[net,tr]=train(net,P,T);

 

net.iw{1,1}%隱層權值

net.b{1}%隱層閾值

 

net.lw{2,1}%輸出層權值

net.b{2}%輸出層閾值

sim(net,P)%網絡輸出

舉例2

利用三層BP神經網絡來完成非線性函數的逼近任務,其中隱層神經元個數為五個。

樣本數據:

解:

看到期望輸出的範圍是(-1.1),所以利用雙極性Sigmoid函數作為轉移函數。

程序如下:

clear;

clc;

X=-1:0.1:1;

D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...

    0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...

    0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];

figure;

plot(X,D,'*'); %繪製原始數據分布圖(附錄:1-1)

net = newff([-1 1],[5 1],{'tansig','tansig'});

net.trainParam.epochs = 100; %訓練的最大次數

net.trainParam.goal = 0.005; %全局最小誤差

net = train(net,X,D); 

O = sim(net,X); 

figure; 

plot(X,D,'*',X,O); %繪製訓練後得到的結果和誤差曲線(附錄:1-2、1-3)

V = net.iw{1,1}%輸入層到中間層權值

theta1 = net.b{1}%中間層各神經元閾值

W = net.lw{2,1}%中間層到輸出層權值

theta2 = net.b{2}%輸出層各神經元閾值

所得結果如下:

輸入層到中間層的權值:

權值直接確定法:

format long

clc;

clear;

xi=-1:0.1:1;xi=xi';

yi=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...

    0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...

    0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];

numSMP=length(yi);     %樣本個數

numW=25;               %隱層神經元個數

xiM=[];

for jj=0:1:(numW-1)

 xiM=[xiM,xi.^jj];   %

end

W=pinv(xiM)*yi';         %隱層最優權值

figure;

plot(xi,yi,'k*',xi,xiM*W,'r:')

舉例3

利用三層BP神經網絡來完成非線性函數的逼近任務,其中隱層神經元個數為五個。

樣本數據:

解:

看到期望輸出的範圍超出(-1,1),所以輸出層神經元利用線性函數作為轉移函數。

程序如下:

clear; 

clc;

X = [0 1 2 3 4 5 6 7 8 9 10];

D = [0 1 2 3 4 3 2 1 2 3 4];

figure;

plot(X,D,'*'); %繪製原始數據分布圖

net = newff([0 10],[5 1],{'tansig','purelin'})

net.trainParam.epochs = 100;

net.trainParam.goal=0.005;

net=train(net,X,D);

O=sim(net,X);

figure;

plot(X,D,'*',X,O); %繪製訓練後得到的結果和誤差曲線(附錄:2-2、2-3)

V = net.iw{1,1}%輸入層到中間層權值

theta1 = net.b{1}%中間層各神經元閾值

W = net.lw{2,1}%中間層到輸出層權值

theta2 = net.b{2}%輸出層各神經元閾值

所得結果如下:

輸入層到中間層的權值:

模友們可能已經發現:現在公眾號推送文章的順序,已經不會按時間排列了。這種變化,可能會讓各位模友錯過我們每天的推送。

所以,如果你還想像往常一樣,聚焦數模樂園,就需要將「數模樂園」標為星標公眾號,同時在閱讀完文章後,別忘了給一個「在看」哦。

(1)點擊頁面最上方「數模樂園」,進入公眾號主頁

(2)點擊右上角的小點點,在彈出頁面點擊「設為星標」,就可以啦。

相關焦點

  • BP神經網絡算法(附matlab程序)
    我在書上看見了一條神經網絡算法的定義(雖然很空洞);「神經網絡是具有適應性的簡單單元組成的廣泛並行互連的網絡,它的組織能夠模擬生物神經系統對真實世界物體所做出的交互反應」。神經元的工作機制是這樣的;如果某神經元的點位超過了一個「閾值」,那麼它就會被激活,即「興奮」起來,向其它神經元發送化學物質。神經網絡算法也是運用了這樣的機制。
  • 【技術 | 神經網絡在Matlab上的簡單實現(一)】
    剛一坐下,之前通過語音助手定下的打卡鬧鐘準時響了起來,提醒我每天的健康打卡……上面這個短短的生活片段就已經涵蓋了神經網絡三個目前最熱門的領域:計算機視覺(CV)、自然語言處理(NLP)和結構化數據處理(這裡指廣告推送)。
  • RBF神經網絡(Matlab)
    RBF神經網絡採用多維空間插值擬合技術,與BP誤差反饋神經網絡不同的是:1、無誤差反饋過程且通過最小二乘計算出權值;2、輸入層為各樣本與聚類中心的距離
  • MATLAB基於BP神經網絡的光伏發電太陽輻照度預測
    MATLAB基於BP神經網絡的光伏發電太陽輻照度預測光伏發電功率主要受太陽輻照度影響,所以準確預測太陽輻照度對光伏功率預測十分重要
  • 神經網絡-BP神經網絡
    感知器作為初代神經網絡,具有簡單、計算量小等優點,但只能解決線性問題。BP神經網絡在感知器的基礎上,增加了隱藏層,通過任意複雜的模式分類能力和優良的多維函數映射能力,解決了異或等感知器不能解決的問題,並且BP神經網絡也是CNN等複雜神經網絡等思想根源。
  • 基於MATLAB的BP神經網絡預測計算GUI界面
    BP神經網絡的計算過程由正向計算過程和反向計算過程組成。正向傳播過程,輸入模式從輸入層經隱單元層逐層處理,並轉向輸出層,每~層神經元的狀態只影響下一層神經元的狀態。如果在輸出層不能得到期望的輸出,則轉入反向傳播,將誤差信號沿原來的連接通路返回,通過修改各神經元的權值,使得誤差信號最小。
  • Python+Matlab+機器學習+深度神經網絡+理論+實踐+視頻+課件+源碼,附下載!
    第三部分就是深度神經網絡的內容了,你想知道的關於深度神經網絡的一切,都可以從裡面學到。值得一提的是,裡面還有matlab的機器學習教程,這絕對是乾貨啊有木有~除了今天的福利,小編之前還整理了很多關於人工智慧、機器學習和大數據的相關電子書籍,感興趣的小夥伴也可以作為參考!文章底部有往期福利,可點擊進行查看!以後還會有陸陸續續的乾貨全部分享給大家。
  • matlab在數學建模中的應用 pdf版
    書中內容完全是根據數學建模競賽的需要而編排的,涵蓋了絕大部分數學建模問題的matlab求解方法。本書內容分上下兩篇。上篇介紹數學建模中常規方法的matlab實現,包括matlab交互、數據建模、程序繪圖、灰色預測、規劃模型等方法;還介紹了各種高級方法的matlab實現,包括遺傳算法、粒子群算法、模擬退火算法、人工神經網絡、小波分析、動態仿真、數值模擬等。
  • matlab矩陣及其運算(五)
    滿足:ABA=A、BAB=B,不滿足等式三、四的逆矩陣本期讓大家知道廣逆矩陣的類型較多就可以了,在多講就怕讀者一時間難以消化。大家記住,在矩陣學習中或者實際應用中如果不仔細看條件,用錯逆矩陣很有可能會帶來計算麻煩。在廣逆矩陣的計算過程中一點要考慮周全,比如說在bp算法反饋中使用符合不同等式的逆矩陣計算對BP誤差的減小是否有影響?在文獻中使用的逆矩陣通常指的是哪一類型,若是類型不同,會帶來什麼問題。
  • Matlab串口通信技術資料:軟體/源碼/論文/書籍/視頻/控制項/程序
    >資料03.MATLAB串口通信技術文章001.MATLAB串口通信技術002.MATLAB串口通信在數據採集中的應用003.用MATLAB的GUIDE工具做有GUI界面的串口通信上位機004.MATLAB_GUI上位機製作流程005.一個實例搞定MATLAB界面編程006.matlab_簡明實例教程
  • Matlab擬合詳解
    使用MATLAB超過15年,精通各種算法及MATLAB算法工具箱,出版有《MATLAB從入門到精通》、《MATLAB2008全程指南》、《MATLAB/Simulink通信系統建模與仿真實例精講》等教程。
  • 41款GUI實例助你隨心所欲玩轉matlab GUI開發【資料分享】
    ,來源於網絡的所有資源所有人均可無條件免費獲取;3、因下載相關資源造成的任何損失,由使用者本人承擔;4、本公眾號不擁有非原創資源的所有權,非原創資源所有權歸原版權方所有。今天給大家帶來由Matt Fig收集整理開發的GUI界面編程實例以及相關GUI編程問題錦集,資料包含41個GUI開發實例以及47個GUI開發問題,所有實例均在非GUIDE環境中開發,具有更強版本兼容性。
  • 「人工神經網絡」人工神經網絡之BP算法
    人工神經網絡(Artificial Neural Network,ANN)是在受到了生物學的啟發後創建的,在某種程度上它是對生物大腦的一種模擬。人們仿照生物神經網絡的結構,使用簡單運算單元模擬神經元,並將大量運算單元按某種形式密集連接,便構成了人工神經網絡。結構如圖:人工神經網絡(ANN)模型帶有權重值(w1,w2,...
  • 詳解LSTM:神經網絡的記憶機制是這樣煉成的
    神經網絡假設我們從某部電影中截取出了一系列的圖像,並且我們想對每張圖像進行標記,使其成為某個事件(是打鬥嗎?演員們在說話嗎?演員們在吃東西嗎?)單隱含層的神經網絡將向量x作為輸入,我們可以將其視作為一組神經元。
  • MATLAB人工神經網絡教程
    然後,你需要將數據集分割,保留1/3的數據用作模型評估,僅用2/3的數據來訓練我們的人工神經網絡模型。(GUI APP)你可以通過鍵入命令 nnstart 來打開神經網絡的啟動圖形界面。這一操作會將數據分割70個-15個-15個樣本,分別作為訓練、驗證和測試集。在「Network Architecture」(網絡結構)界面,修改隱層神經元(hidden neurons)的個數值為100,並再次單擊「Next」。在「Train Network」(網絡訓練)界面,單擊「Train」(訓練)按鈕開始訓練。訓練結束後,單擊「Next」。
  • 【從零學習OpenCV 4】深度神經網絡應用實例
    隨著深度神經網絡的發展,OpenCV中已經有獨立的模塊專門用於實現各種深度學習的相關算法。本節中將以介紹如何使用OpenCV 4中的相關函數實現深度學習算法,重點介紹示例程序和處理效果,目的是為了增加讀者對深度學習在圖像處理中的應用的了解,提高讀者對圖像處理的興趣。
  • 手寫神經網絡識別MNIST數據集
    神經網絡原理可以參考:BP神經網絡模型及其Gradient Descent的推導過程主要步驟:1.input layer有784
  • BP神經網絡+TensorFlow做圖片識別
    +圖片識別應用(附源碼)前言:這是一篇基於tensorflow框架,創建的只有一層隱藏層的BP神經網絡,做的圖片識別,內容也比較簡單,全當是自己的學習筆記了。None表示其值大小不定,意即選中的X、Y的數量暫時不定4、創建BP神經網絡"""用隨機數列生成的方式,創建含一個隱藏層的神經網絡。
  • 在U盤中運行深度神經網絡?詳解英特爾Movidius神經元計算棒 | | 文末福利-計算棒試用申請
    英特爾中國研究院的大神已經給出了詳細攻略:在U盤中運行深度神經網絡?詳解英特爾Movidius神經元計算棒第二輪Movidius™神經計算棒申請通道」就在文章結尾(飆車的同學請直達文末申請試用)人工智慧的熱潮正在席捲各個行業,如何讓各式各樣的設備都智能化已成為研究熱點。
  • MATLAB
    工具箱是MATLAB函數的子程序庫,每一個工具箱都是為某一類學科專業和應用而定製的,主要包括信號處理、控制系統、神經網絡、模糊邏輯、小波分析和系統仿真等方面的應用。MATLAB中也同樣有許多有意思的實例,為提高讀者對MATLAB和Simulink的興趣,特舉部分以供參考。