?? neuralnetwork_bp_classification.m
字號:
% BP 神經網絡用于模式分類
% 使用平臺 - Matlab6.5
% 作者:陸振波,海軍工程大學
% 歡迎同行來信交流與合作,更多文章與程序下載請訪問我的個人主頁
% 電子郵件:luzhenbo@yahoo.com.cn
% 個人主頁:http://luzhenbo.88uu.com.cn
clc
clear
close all
%---------------------------------------------------
% 產生訓練樣本與測試樣本,每一列為一個樣本
n1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
x1 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
n2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
x2 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)]
xn_train = n1; % 訓練樣本
dn_train = x1; % 訓練目標
xn_test = n2; % 測試樣本
dn_test = x2; % 測試目標
%---------------------------------------------------
% 函數接口賦值
NodeNum = 20; % 隱層節點數
TypeNum = 3; % 輸出維數
p1 = xn_train; % 訓練輸入
t1 = dn_train; % 訓練輸出
Epochs = 1000; % 訓練次數
P = xn_test; % 測試輸入
T = dn_test; % 測試輸出(真實值)
%---------------------------------------------------
% 設置網絡參數
%TF1 = 'tansig';TF2 = 'purelin'; % 缺省值
%TF1 = 'tansig';TF2 = 'logsig';
TF1 = 'logsig';TF2 = 'purelin';
%TF1 = 'tansig';TF2 = 'tansig';
%TF1 = 'logsig';TF2 = 'logsig';
%TF1 = 'purelin';TF2 = 'purelin';
net = newff(minmax(p1),[NodeNum TypeNum],{TF1 TF2},'trainlm');
% 指定訓練參數
%net.trainFcn = 'trainlm'; % 內存使用最多(快)
%net.trainFcn = 'trainbfg';
%net.trainFcn = 'trainrp'; % 內存使用最少(慢)
%net.trainFcn = 'traingda'; % 變學習率
%net.trainFcn = 'traingdx';
net.trainParam.epochs = Epochs; % 最大訓練次數
net.trainParam.goal = 1e-8; % 最小均方誤差
net.trainParam.min_grad = 1e-20; % 最小梯度
net.trainParam.show = 200; % 訓練顯示間隔
net.trainParam.time = inf; % 最大訓練時間
%---------------------------------------------------
% 訓練與測試
net = train(net,p1,t1); % 訓練
X = sim(net,P); % 測試 - 輸出為預測值
X = full(compet(X)) % 競爭輸出
%---------------------------------------------------
% 結果統計
Result = ~sum(abs(X-x2)) % 正確分類顯示為1
Percent = sum(Result)/length(Result) % 正確分類率
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -