當前位置:
首頁 > 最新 > BP神經網路模型:Matlab

BP神經網路模型:Matlab

本文介紹了運用計量統計軟體Matlab(2017aMAC)建立BP神經網路模型的方法。主要運用的方程是feedforwardnet

整理數據

本例中的數據來自於Matalab提供的內置數據,可以通過代碼

1.load bodyfat_dataset

獲得,為方便其他軟體讀取,已經將數據複製粘貼到Excel中

本例中,1至13列為輸入變數,第14列為輸出變數,即輸入層包含13個神經元,輸出層有一個神經元。另外設定一個隱含層,包括20個神經元

每個神經元包含252個數據點,其中最後一個點不參與訓練,留作測試最終的模型,即利用前251個數據點訓練模型,利用最後一個點檢驗模型

在Matlab中輸入數據

1、點擊打開Matlab,確保保存的Excel文件和軟體路徑一致

2、在Editor界面中編輯代碼,其中clc清除Command Window,clear清除Workspace

1.clc

2.clear

Note 1:

選中代碼,點擊滑鼠右鍵,選擇Evaluate Selection執行選中代碼

3、利用xlsread函數讀取數據,其中第一格單引號內是文件名稱,第二格是工作表位置,第三格單引號內是數據範圍

1.clc

2.clear

3.

4.data=xlsread("bodyfat_dataset",1,"A1:N252");

5.

執行代碼後,新的變數出現在Workspace頁面中,其中,矩陣列表示各變數,行表示各數據

進行BP神經網路建模

數據錄入完成後,繼續在Editor界面進行操作

1、首先利用feedforwardnet函數建立模型,20表示隱含層包含20個神經元,輸入層至隱含層的傳遞函數為Hyperbolictangent函數,隱含層至輸出層的傳遞函數為Sigmoid函數

1.clc

2.clear

3.

4.data = xlsread("bodyfat_dataset",1," A1:N252");

5.

6.net = feedforwardnet(20);

9.

2、對原始數據進行拆分,前251個數據用來訓練,最後一個用來測試

1.clc

2.clear

3.

4.data = xlsread("bodyfat_dataset",1," A1:N252");

5.

6.net = feedforwardnet(20);

9.

10.input = data(1:251,1:13);

11.inputend = data(end,1:13);

12.target = data(1:251,14);

13.targetend = data(end,end);

14.

3、利用train對模型進行訓練,遵循反向修改權重的原則

1.clc

2.clear

3.

4.data = xlsread("bodyfat_dataset",1," A1:N252");

5.

6.net = feedforwardnet(20);

9.

10.input = data(1:251,1:13);

11.inputend = data(end,1:13);

12.target = data(1:251,14);

13.targetend = data(end,end);

14.

15.net = train(net,input",target");

16.

在跳出的訓練圖中,可以看出該模型輸入層個神經元,隱含層20個,輸出層1個。模型訓練17次就達到預期要求

4、最後,利用留置的數據進行測試,輸出值與目標值的偏差

1.clc

2.clear

3.

4.data = xlsread("bodyfat_dataset",1," A1:N252");

5.

6.net = feedforwardnet(20);

9.

10.input = data(1:251,1:13);

11.inputend = data(end,1:13);

12.target = data(1:251,14);

13.targetend = data(end,end);

14.

15.net = train(net,input",target");

16.

17.net(inputend")-targetend

18.

Note 2:

重複運行代碼,可以發現每次的結果並不相同,這是因為,初始權重是隨機設定的

Note 3 :

由於初始權重是隨機設定的,所以每次運行的結果可能有所不同,這也體現出神經網路模型的局限性,模型訓練找出的誤差最小權重可能只是局部上使誤差最小的權重,這樣的權重可能有很多個,所以結果有很多種。解決這種問題的一個方法是,留一部分數據不參加訓練,而是用來測試模型的輸出結果,當輸出與目標值較為接近時,再利用模型進行預測

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

python人工智慧-圖像識別

TAG:全球大搜羅 |