BP神经网络得到的数学表达式,但是当输入不同的输入时,结果都一样,这是为什么?。
古いコメントを表示
clear all;
N=[2300 2271 2268 2255 2234 2217 2200 2170 2150 2100 2000 1900 1800 1700 1600 1500 1400 1300];
%发动机转速(单位:rpm)
T=[41 100 200 300 400 500 500 700 800 835 980 1051 1093 1117 1175 1215 1227 1211];
%发动机转矩(单位:N*m)
%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理
[pn, inputStr] = mapminmax(N);
[tn, outputStr] = mapminmax(T);
%建立BP神经网络
net = newff(pn, tn, [9 1],{'logsig', 'purelin'},'trainlm','learngdm');
%每10轮回显示一次结果
net.trainParam.show = 10;
%最大训练次数
net.trainParam.epochs = 100;
%网络的学习速率
net.trainParam.lr = 0.05;
%训练网络所要达到的目标误差
net.trainParam.goal = 0.001;
%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。为了让程序继续运行,用以下命令取消这条设置
net.divideFcn = '';
%开始训练网络
net= train(net, pn, tn);
save E53net net;
W1= net.iw{1, 1}%输入层到中间层的权值
B1 = net.b{1} %中间各层神经元阈值
W2 = net.lw{2, 1} %中间层到输出层的权值
B2 = net.b{2} %输出层各神经元阈值
上面的程序得到网络的权值和阈值,下面程序是预测的程序
W1=[-39.9641 -41.8587 -26.8856 25.3122 -25.2031 25.0417 -25.1839 -25.1307 -25.1955];
W1=W1(:);
B1=[36.6779 31.4739 11.1099 -5.7042 1.3082 7.1167 -12.5644 -18.9806 -25.2047];
B1=B1(:);
W2=[4.2560 3.4466 2.3831 0.5025 0.7483 -0.6174 0.4067 0.1181 -0.3683];
B2=[-0.0396];
E=[1300 1400 1500 1600 1700]
Q= mapminmax('apply', E, inputStr);
simy=purelin(W2*logsig(W1*E+B1)+B2);
A= mapminmax('reverse',simy, outputStr)
回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で EEG/MEG/ECoG についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!