Matlab實現BP神經網路

2021-06-21 20:55:33 字數 2506 閱讀 2745

該實現為《資料探勘》課程的一次作業。資料在**上,所以資料為csv格式。但bp神經網路演算法為最一般的實現,所以有參考價值。

close all  %關閉開啟的檔案

clear %清除記憶體中的資料

echo on %顯示執行的每一條命令

clc %清除命令列視窗

pause %敲任意鍵開始

%定義訓練樣本

%p為輸入向量,注意最後的轉置為了保證輸入向量與目標向量的列數相同。

%p為384*10000矩陣

p = csvread('c:\users\administrator\desktop\train.csv',1,2)';

%t為目標向量,注意最後的轉置為了保證輸入向量與目標向量的列數相同。

%t為1*10000矩陣

rng = [1, 1, 10000, 1];

t = csvread('c:\users\administrator\desktop\train.csv',1,1, rng)';

%建立乙個新的前向神經網路

%傳遞函式包括tansig、purelin、logsig

%newff舊的使用方法,會有warning

net=newff(minmax(p),[20,1],,'traingdm')

%設定訓練引數

net.trainparam.show = 100; %100個迭代顯示收斂曲線變化

net.trainparam.lr = 0.05; %學習速率為0.05

net.trainparam.mc = 0.9; %網路中設定動量因子為c=0.9 ?

net.trainparam.epochs = 10000; %最大訓練次數為10000

net.trainparam.goal = 1e-3; %訓練精度為1e-3

%呼叫 traingdm 演算法訓練 bp 網路

[net,tr]=train(net,p,t);

%讀取測試資料

q = csvread('c:\users\administrator\desktop\test.csv',1,1)';

%對bp網路進行**

a = sim(net,q);

%生成所需格式

n=10000 %陣列長度

b=zeros(1,n) %定義乙個長度為n的陣列a(陣列a為一行形式的陣列),並將每個元素值初始化為0

for num=1:n %迴圈給a的每個元素值初始化為num*2

b(num)=num;

endr = [b; a]';

%寫入資訊

csvwrite('c:\users\administrator\desktop\result.csv', r, 1, 0);

pause

clc

echo off

實現過程如上所示,下面解釋一下所用到的函式。

(1)csvread

第一種:m = csvread('filename') ,直接讀取csv檔案的資料,並返回給m,這時要求整個csv檔案內容全部為用逗號隔開的數字,不能用其他字元。

第二種:m = csvread('filename',r,c) ,讀取csv檔案中從第r-1行,第c-1列的資料開始的資料,這對帶有標頭檔案說明的csv檔案(如示波器等採集的檔案)的讀取是很重要的。

第三種:m = csvread('filename',r,c,rng),其中 rng = [r1 c1 r2 c2],讀取左上角為索引為(r1,c1) ,右下角索引為(r2,c2)的矩陣中的資料。

(2)newff

第乙個引數是乙個rx2的矩陣以定義r個輸入向量的最小值和最大值。

第二個引數是乙個設定每層神經元個數的陣列。

第三個引數是包含每層用到的傳遞函式名稱的細胞陣列。

最後乙個引數是用到的訓練函式的名稱。

(3)train

[net,tr] = train(net,x,t,xi,ai)

netnetwork x

輸入向量

t目標向量(default = zeros) xi

initial input delay conditions (default = zeros) ai

initial layer delay conditions (default = zeros)

and returns

netnew network tr

training record (epoch andperf)

(4)網路層數的選擇,傳遞函式的選擇,訓練引數的選擇尚待研究。

reference:

1. 新版matlab中神經網路訓練函式newff的使用方法

2. matlab newff使用

3. 怎樣從matlab中讀取csv檔案

4. matlab documentation

BP神經網路(基於MATLAB)

clc clear all 匯入資料 load s data.mat s含量所用資料 n 12 n 是自變數的個數 m 1 m 是因變數的個數 讀取訓練資料 train num 1600 訓練樣本數 train data s data 1 train num,特徵值歸一化 train input,m...

bp神經網路matlab 神經網路有哪些網路

深度學習,人工智慧,神經網路這些概念往往令初學者頭疼不已,這裡列出其基礎概念的歸納總結,幫助小白入坑,共同學習。人工神經網路 artificial neural network,ann 是一種模擬生物神經網路的結構和功能的數學模型或計算模型。神經網路與小波分析 混沌 粗糙理論 分形理論的融合。194...

BP神經網路設計的matlab簡單實現

例1 採用動量梯度下降演算法訓練 bp 網路。用matlab自帶的神經網路 訓練樣本定義如下 輸入向量為 p 1 2 3 1 1 1 5 3 目標向量為 t 1 1 1 1 解 本例的 matlab 程式如下 close all clear echo on clc newff 生成乙個新的前向神經網...