BP神经网络多个输出的问题。
Show older comments
各位大神好!刚接触Matlab神经网络,用的是BP网络,输入矩阵是17×365,输出是4×365,输出应该有4个变量,可是不知道为什么计算结果总是只有1个。像各位大神请教,这究竟是因为什么?代码如下:————————————————————————————
%% 双隐含层BP神经网络
%% 清空环境变量
clc
clear
%% 训练数据预测数据提取及归一化
%下载输入输出数据
load input_4;
load output_4;
p=input_4;
t=output_4;
%从1到365间随机排序
k=rand(1,365);
[m,n]=sort(k);
%找出训练数据和预测数据
input_train=p(n(1:300),:)';
output_train=t(n(1:300));
input_test=p(n(301:365),:)';
output_test=t(n(301:365));
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,[12 8],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=10000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;
net.trainParam.max_fail=200;
%网络训练
net=train(net,inputn,outputn);
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
%网络预测输出
an=sim(net,inputn_test);
%网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);
%% 结果分析
figure(1)
plot(BPoutput,':og')
hold on
plot(output_test,'-*');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
%预测误差
error=BPoutput-output_test;
figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
figure(3)
plot((output_test-BPoutput)./BPoutput,'-*');
title('神经网络预测误差百分比')
errorsum=sum(abs(error));
————————————————————————————————
输出层神经元总是只有一个,如下图所示。
Accepted Answer
More Answers (0)
Categories
Find more on Calculus in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!