模糊神经网络matlab模拟仿真
1、基礎知識理論
? ? ? ?BP網(wǎng)絡的傳遞函數(shù)有多種。Log-sigmoid型函數(shù)的輸入值可取任意值,輸出值在0和1之間;tan-sigmod型傳遞函數(shù)tansig的輸入值可取任意值,輸出值在-1到+1之間;線性傳遞函數(shù)purelin的輸入與輸出值可取任意值。BP網(wǎng)絡通常有一個或多個隱層,該層中的神經(jīng)元均采用sigmoid型傳遞函數(shù),輸出層的神經(jīng)元則采用線性傳遞函數(shù),整個網(wǎng)絡的輸出可以取任意值。
newff()? 功能? 建立一個前向BP網(wǎng)絡,格式? net = newff(PR,[S1 S2...SN1],{TF1 TF2...TFN1},BTF,BLF,PF)
?net為創(chuàng)建的新BP神經(jīng)網(wǎng)絡;? PR為網(wǎng)絡輸入取向量取值范圍的矩陣;? [S1 S2…SNl]表示網(wǎng)絡隱含層和輸出層神經(jīng)元的個數(shù);
? {TFl TF2…TFN1}表示網(wǎng)絡隱含層和輸出層的傳輸函數(shù),默認為‘tansig’;? BTF表示網(wǎng)絡的訓練函數(shù),默認為‘trainlm’;? BLF表示網(wǎng)絡的權值學習函數(shù),默認為‘learngdm’;? PF表示性能數(shù),默認為‘mse’。
BP網(wǎng)絡一般都是用三層的,傳遞函數(shù)如下:
compet---競爭型傳遞函數(shù);
hardlim---閾值型傳遞函數(shù);
hardlims---對稱閾值型傳輸函數(shù);
logsig---S型傳輸函數(shù);
poslin---正線性傳輸函數(shù);
purelin---線性傳輸函數(shù);
radbas---徑向基傳輸函數(shù);
satlin---飽和線性傳輸函數(shù);
satlins---飽和對稱線性傳輸函數(shù);
softmax---柔性最大值傳輸函數(shù);
tansig---雙曲正切S型傳輸函數(shù);
tribas---三角形徑向基傳輸函數(shù);
神經(jīng)元上的傳遞函數(shù):
? ?傳遞函數(shù)是BP網(wǎng)絡的重要組成部分,必須是連續(xù)可微的,BP網(wǎng)絡常采用S型的對數(shù)或正切函數(shù)和線性函數(shù)。
神經(jīng)網(wǎng)絡輸入訓練的矩陣必須是,行相同,或者是列相同,使用matlab建立的一般是列相同,就可以訓練
?
2、具體例子
%bp神經(jīng)網(wǎng)絡
p=[1 2;-1 1;-2 1;-4 0]';
t=[0.2 0.8 0.8 0.2];
net=newff([-1 1;-1 1],[5 1],{'logsig','logsig'},'traingd');
net.trainParam.goal=0.001;
net.trainParam.epochs=5000;
[net,tr]=train(net,p,t);
disp('網(wǎng)絡訓練后的第一層權值為:')
iw1=net.iw{1}
disp('網(wǎng)絡訓練后的第一層fa值為:')
b1=net.b{1}
disp('網(wǎng)絡訓練后的第一層權值為:')
iw2=net.Lw{2}
disp('網(wǎng)絡訓練后的第2層fa值為:')
b2=net.b{2}
?p1=[1 2;-1 1;-2 1;-4 0]';
a2=sim(net,p1);
disp('輸出分類結果為')
a2=a2>0.5
第二個例子:
load('spectra_data.mat')
temp = randperm(size(NIR,1));
% 訓練集——50個樣本
P_train = NIR(temp(1:50),:)';
T_train = octane(temp(1:50),:)';
% 測試集——10個樣本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);
net = newff(P_train,T_train,3);
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.trainParam.lr = 0.01;
net = train(net,P_train,T_train);
T_sim = sim(net,P_test);
error = abs(T_sim - T_test)./T_test;
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));
result = [T_test' T_sim' error'];
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真實值','預測值')
xlabel('預測樣本')
ylabel('辛烷值')
string = {'測試集辛烷值含量預測結果對比';['R^2=' num2str(R2)]};
title(string)
R2檢驗結果
3、仿真
首先搭建仿真模塊,然后使用subsystem模塊,matlab使用gensim()函數(shù),調用剛剛做好的訓練模型,gensim(net,-1)一般格式,
然后引入神經(jīng)網(wǎng)絡模塊,進行仿真
總結
以上是生活随笔為你收集整理的模糊神经网络matlab模拟仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国第一代程序员列传 我的偶像
- 下一篇: matlab访问被拒绝,安装MATLAB