我的程序代码如下:
close all
clear
echo on
clc
% NEWFF——生成一个新的前向神经网络
% TRAIN——对BP神经网络进行训练
% SIM——对BP神经网络进行仿真
% 定义训练样本
% P为输入矢量
P=[0.0010 0.0021 0.0050 0.0094 0.0124;0.0021 0.0050 0.0094 0.0124 0.0162;0.0050 0.0094 0.0124 0.0162 0.0193;0.0094 0.0124 0.0162 0.0193 0.0240;...
0.0124 0.0162 0.0193 0.0240 0.0325;0.0162 0.0193 0.0240 0.0325 0.0444;0.0193 0.0240 0.0325 0.0444 0.0548;0.0240 0.0325 0.0444 0.0548 0.0719;...
0.0325 0.0444 0.0548 0.0719 0.0936;0.0444 0.0548 0.0719 0.0936 0.1370;0.0548 0.0719 0.0936 0.1370 0.1979;0.0719 0.0936 0.1370 0.1979 0.2806];
% T为目标矢量
T=[0.0162 0.0193 0.0240 0.0325 0.0444 0.0548 0.0719 0.0936 0.1370 0.1979 0.2806 0.3507];
% Ptest为测试输入矢量
Ptest=[0.1370 0.1979 0.2806 0.3507 0.4309;0.1979 0.2806 0.3507 0.4309 0.4363;0.2806 0.3507 0.4309 0.4363 0.4951];
% Ttest为测试目标矢量
Ttest=[0.4363 0.4951 0.5659];
% 创建一个新的前向神经网络
net=newff(minmax(P'),[12,1],{'logsig','purelin'},'traingdm');
% 设置训练参数
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 5000;
net.trainParam.goal = 0.0001;
% 调用TRAINGDM算法训练 BP 网络
[net,tr]=train(net,P',T);
net.iw{1,1}%隐藏权值
net.b{1}%隐藏阙值
net.iw{2,1}%输出层权值
net.b{2}%输出层阙值
% 对BP网络进行仿真
A=sim(net,P');
figure;
plot((2000:2011),T,'-*',(2000:2011),A,'-o');
title('网络的实际输出和仿真输出结果,*为真实值,o为预测值');
xlabel('年份');
ylabel('产值');
% 对BP网络进行测试
A1=sim(net,Ptest');
figure;
plot((2012:2014),Ttest','-*',(2012:2014),A1,'-o');
title('测试后网络的实际输出和仿真输出结果,*为真实值,o为预测值');
xlabel('年份');
ylabel('产值');
V=net.iw{1,1}
thetal=net.b{1}
W=net.iw{2,1}
thetal=net.b{2}
% 计算仿真误差error
E = T - A;
MSE=mse(E);
figure;
plot(1:length(E),E,'-.');
title('误差变化图')
运行出来的错误很多,由于本人处于很菜鸟的级别,请高手指教
close all
clear
echo on
clc
% NEWFF——生成一个新的前向神经网络
% TRAIN——对BP神经网络进行训练
% SIM——对BP神经网络进行仿真
% 定义训练样本
% P为输入矢量
P=[0.0010 0.0021 0.0050 0.0094 0.0124;0.0021 0.0050 0.0094 0.0124 0.0162;0.0050 0.0094 0.0124 0.0162 0.0193;0.0094 0.0124 0.0162 0.0193 0.0240;...
0.0124 0.0162 0.0193 0.0240 0.0325;0.0162 0.0193 0.0240 0.0325 0.0444;0.0193 0.0240 0.0325 0.0444 0.0548;0.0240 0.0325 0.0444 0.0548 0.0719;...
0.0325 0.0444 0.0548 0.0719 0.0936;0.0444 0.0548 0.0719 0.0936 0.1370;0.0548 0.0719 0.0936 0.1370 0.1979;0.0719 0.0936 0.1370 0.1979 0.2806];
% T为目标矢量
T=[0.0162 0.0193 0.0240 0.0325 0.0444 0.0548 0.0719 0.0936 0.1370 0.1979 0.2806 0.3507];
% Ptest为测试输入矢量
Ptest=[0.1370 0.1979 0.2806 0.3507 0.4309;0.1979 0.2806 0.3507 0.4309 0.4363;0.2806 0.3507 0.4309 0.4363 0.4951];
% Ttest为测试目标矢量
Ttest=[0.4363 0.4951 0.5659];
% 创建一个新的前向神经网络
net=newff(minmax(P'),[12,1],{'logsig','purelin'},'traingdm');
% 设置训练参数
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 5000;
net.trainParam.goal = 0.0001;
% 调用TRAINGDM算法训练 BP 网络
[net,tr]=train(net,P',T);
net.iw{1,1}%隐藏权值
net.b{1}%隐藏阙值
net.iw{2,1}%输出层权值
net.b{2}%输出层阙值
% 对BP网络进行仿真
A=sim(net,P');
figure;
plot((2000:2011),T,'-*',(2000:2011),A,'-o');
title('网络的实际输出和仿真输出结果,*为真实值,o为预测值');
xlabel('年份');
ylabel('产值');
% 对BP网络进行测试
A1=sim(net,Ptest');
figure;
plot((2012:2014),Ttest','-*',(2012:2014),A1,'-o');
title('测试后网络的实际输出和仿真输出结果,*为真实值,o为预测值');
xlabel('年份');
ylabel('产值');
V=net.iw{1,1}
thetal=net.b{1}
W=net.iw{2,1}
thetal=net.b{2}
% 计算仿真误差error
E = T - A;
MSE=mse(E);
figure;
plot(1:length(E),E,'-.');
title('误差变化图')
运行出来的错误很多,由于本人处于很菜鸟的级别,请高手指教