日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

bp神经网络matlab feedfollownet,BP神经网络模型:Matlab

發布時間:2024/8/1 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。