您的位置:首页 > 理论基础 > 计算机网络

运行BP神经网络预测误差大

2015-12-14 09:28 465 查看
转载自

数据为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('样本')

%}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息