本文主要是介绍运行BP神经网络预测误差大,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自
数据为66个,17个指标输入,1个输出。
数据长短不一,最小的个位数,最大的9位数。运行下列代码后误差非常大,求大神们给减小误差的指导方向。matlab代码如下:
clc
clear
%load data1 input output
load matlab3 input output
P=input(1:60,:)';
T=output(1:60,:)';
input_test=input(1:60,:)';
output_test=output(1:60,:)';
%训练数据归一化
[inputn,inputs]=mapminmax(P);
[outputn,outputs]=mapminmax(T);
% 创建一个新的前向神经网络
net=newff(minmax(P),[17,1],{'tansig','purelin'},'trainbr');
% 当前输入层权值和阈值
inputWeights=net.IW{1,1};
inputbias=net.b{1};
% 当前网络层权值和阈值
layerWeights=net.LW{2,1};
layerbias=net.b{2};
% 设置训练参数
net.trainParam.show = 100;
net.trainParam.lr = 0.1;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 6000;
net.trainParam.goal = 1e-3;
% 调用 TRAINGDM 算法训练 BP 网络
[net,tr]=train(net,P,T);
%BP神经网络的预测
%预测数据归一化
%inputn_test=mapminmax('apply',input_test,inputs);
%BP神经网络预测输出
an=sim(net,P);
%输出结果反归一化
BPoutput=mapminmax('reverse',an,outputs);
%输出训练后的权值和阈值
iw1=net.iw(1);
b1=net.b(1);
iw2=net.lw(2);
ba=net.b(2);
%画图
%网络预测结果图形
figure(1)
plot(BPoutput,':og')
hold on
plot(output_test,'-*')
legend('预测输出','期望输出')
title('BP神经网络预测输出')
ylabel('输出')
xlabel('样本')
%网络预测误差图形
error=output_test-BPoutput;
figure(2)
plot(error,'-*')
title('BP神经网络预测误差')
ylabel('误差 error')
xlabel('样本')
%}
这篇关于运行BP神经网络预测误差大的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!