BP神经网络多个输出的问题。
显示 更早的评论
各位大神好!刚接触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));
————————————————————————————————
输出层神经元总是只有一个,如下图所示。
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!