% 创建一个新饥烂的前向神经网络
net_1=newff(minmax(P),[10,1],,'traingdm')
% 当前输入层权值和阈值
inputWeights=net_1.IW
inputbias=net_1.b
% 当烂哗漏前网络层权值和阈值
layerWeights=net_1.LW
layerbias=net_1.b
应该没问题吧。芦滚
问题:
1:隐含层的节点数应该小于训练样本数(你这里et_1=newff(minmax(P),[150,1],{'tansig','purelin'},'traingdm')中的150远远大于训练样本数10个(1989:2003))
2:如果把时间当做样本输入的话,这是不太合适的。如果那样还不如用时间序列求解。而且在现在的这个程序中还会会出现ynhj88311说的那种情况。(这里还应该做归一化处理更好)
clc
clear
date=1988:2003
P0=[ 0.1093 0.1110 0.1127 0.1141 0.1154 0.1164 0.1171 0.1175 0.1178 0.1179 0.1179 0.1178 0.1179 0.1180 0.1182 0.1186]% 样本数据这里数据在0~1之间就不用归一化处理了
plot(date,P0,'b+') %原数据随时间变化的曲线
hold 迟汪on
title('原数据曲线图')
for i=1:13
P(:,i)=P0(i:i+2)
T(:,i)=P0(i+3)
end
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')
% 设圆核置训橘旦掘练参数
net_1.trainParam.show = 1
net_1.trainParam.lr = 0.2
net_1.trainParam.mc = 0.9
net_1.trainParam.epochs=10000000
net_1.trainParam.goal = 1e-10
% 调用 TRAINGDM算法训练 BP 网络
[net_1,tr]=train(net_1,P,T)
% 对 BP 网络进行仿真
A = sim(net_1,P)
E = T - A
MSE=mse(E)
P2001=sim(net_1,[0.1179 0.1178 0.1179 ]')
P2002=sim(net_1,[0.1178 0.1179 0.1180 ]')
P2003=sim(net_1,[0.1179 0.1180 0.1182 ]')
p2=P0(14:16)'
yuce2004=sim(net_1,p2)
figure
Y=[A(1,:),P2001,P2002,P2003,yuce2004]
Date=[date,2004]
plot(Date,Y,'r+')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)