bp神经网络matlab feedfollownet,BP神经网络模型:Matlab
本文介紹了運用計量統計軟件Matlab(2017a MAC) 建立BP神經網絡模型的方法。主要運用的方程是feedforwardnet
整理數據
本例中的數據來自于Matalab提供的內置數據,可以通過代碼
load bodyfat_dataset
獲得,為方便其他軟件讀取,已經將數據復制粘貼到Excel中
本例中,1至13列為輸入變量,第14列為輸出變量,即輸入層包含13個神經元,輸出層又一個神經元。另外設定一個隱含層,包括20個神經元
每個神經元包含252個數據點,其中最后一個點不參與訓練,留作測試最終的模型,即利用前251個數據點訓練模型,利用最后一個點檢驗模型
在Matlab中輸入數據
1、點擊打開 Matlab ,確保保存的Excel文件和軟件路徑一致
2、在 Editor 界面中編輯代碼,其中 clc 清除 Command Window, clear 清除 Workspace
2、在 Editor 界面中編輯代碼,其中 clc 清除 Command Window, clear 清除 Workspace
clcclear
Note 1:
選中代碼,點擊鼠標右鍵,選擇 Evaluate Selection 執行選中代碼
3、利用 xlsread 函數讀取數據,其中第一格單引號內是文件名稱,第二格是工作表位置,第三格單引號內是數據范圍
clccleardata=xlsread('bodyfat_dataset',1,' A1:N252'
執行代碼后,新的變量出現在 Workspace 頁面中,其中,矩陣列表示各變量,行表示各數據
進行BP神經網絡建模
數據錄入完成后,繼續在Editor界面進行操作
1、首先利用feedforwardnet函數建立模型,20表示隱含層包含20個神經元,輸入層至隱含層的傳遞函數為Hyperbolic tangent函數,隱含層至輸出層的傳遞函數為Sigmoid函數
clccleardata = xlsread('bodyfat_dataset',1,' A1:N252');net = feedforwardnet(20);net.layers{1}.transferFcn = 'tansig';net.layers{2}.transferFcn = 'logsig';
2、對原始數據進行拆分,前251個數據用來訓練,最后一個用來測試
clccleardata = xlsread('bodyfat_dataset',1,' A1:N252');net = feedforwardnet(20);net.layers{1}.transferFcn = 'tansig';net.layers{2}.transferFcn = 'logsig';input = data(1:251,1:13);inputend = data(end,1:13);target = data(1:251,14);targetend = data(end,end);
3、利用train對模型進行訓練,遵循反向修改權重的原則
clccleardata = xlsread('bodyfat_dataset',1,' A1:N252');net = feedforwardnet(20);net.layers{1}.transferFcn = 'tansig';net.layers{2}.transferFcn = 'logsig';input = data(1:251,1:13);inputend = data(end,1:13);target = data(1:251,14);targetend = data(end,end);net = train(net,input',target');
在跳出的訓練圖中,可以看出該模型輸入層個神經元,隱含層20個,輸出層1個。模型訓練17次就達到預期要求
4、最后,利用留置的數據進行測試,輸出值與目標值的偏差
clccleardata = xlsread('bodyfat_dataset',1,' A1:N252');net = feedforwardnet(20);net.layers{1}.transferFcn = 'tansig';net.layers{2}.transferFcn = 'logsig';input = data(1:251,1:13);inputend = data(end,1:13);target = data(1:251,14);targetend = data(end,end);net = train(net,input',target');net(inputend')-targetend
Note 1 :
重復運行代碼,可以發現每次的結果并不相同,這是因為,初始權重是隨機設定的
Note 2 :
由于初始權重是隨機設定的,所以每次運行的結果可能有所不同,這也體現出神經網絡模型的局限性,模型訓練找出的誤差最小權重可能只是局部上使誤差最小的權重,這樣的權重可能有很多個,所以結果有很多種。解決這種問題的一個方法是,留一部分數據不參加訓練,而是用來測試模型的輸出結果,當輸出與目標值較為接近時,再利用模型進行預測
5、在代碼前添加rng(0),則限定了初始權重,重復運行代碼,將得到相同的結果
clcclear1rng(0)data = xlsread('bodyfat_dataset',1,' A1:N252');net = feedforwardnet(20);net.layers{1}.transferFcn = 'tansig';net.layers{2}.transferFcn = 'logsig';input = data(1:251,1:13);inputend = data(end,1:13);target = data(1:251,14);targetend = data(end,end);net = train(net,input',target');net(inputend')-targetend
總結
以上是生活随笔為你收集整理的bp神经网络matlab feedfollownet,BP神经网络模型:Matlab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言的编译器手机版,C语言编译器下载_
- 下一篇: 多径瑞利信道的一种matlab产生方法