数学建模社区-数学中国
标题:
跪求懂神经网络的大哥进来指点下小弟
[打印本页]
作者:
yqxxqy
时间:
2009-9-2 16:00
标题:
跪求懂神经网络的大哥进来指点下小弟
我刚学习神经网络,练了个简单的例子:第一年工资1000,第二年2000,第三年3000,第四年4000。。。。。依此类推,样本一直到第10年的10000;
( K5 D" @) E, s6 U8 m
我用前三年的做为输入,第四年的作为目标训练;
I9 U5 x) l. a6 H
先将样本归一化,但之后做预测就出现问题了,用第8,9,10年的做输入,预测第11年的结果就不对了,个人觉得应该是后面输入数据归一化的问题,但不知道怎么改。
# `- {* B7 U; z3 z- v
具体程序如下:
- F1 Y, x7 m7 k; f: g6 c3 Z
p=[1000,2000,3000,4000,5000,6000,7000;
6 y: e' O$ p; @. m
2000,3000,4000,5000,6000,7000,8000;
4 w5 E4 ]1 G& ?/ D' _& L
3000,4000,5000,6000,7000,8000,9000];
) }5 ~* f8 ?8 n; }' [
t=[4000,5000,6000,7000,8000,9000,10000];
2 T4 M* I6 R; Y/ p9 d
for i=1:3
9 |! a0 k/ w# Y; ]$ f6 P; l
P(i,
=(p(i,
-min(p(i,
))/(max(p(i,
)-min(p(i,
));%归一化
) v# e- C8 _2 C6 Q/ a/ N
end
0 w- S! I4 ^2 V
T=(t-min(t))/(max(t)-min(t));
+ M! v; j0 F* b$ A4 U
net=newff(minmax(P),[3,1],{'logsig','purelin'},'traingdx')
% d9 G$ ^( f( V( W( `7 R! J8 z
inputWeights=net.IW{1,1}; % 当前输入层权值和阀值
! X$ E* q6 ]% @, ?
inputbias=net.b{1};
. d$ _; V' r2 b/ I6 B1 U
layerWeights=net.LW{2,1};% 当前网络层权值和阀值
; Y% f4 p/ l& I5 F- c+ h5 d. ~: x
layerbias=net.b{2};
& r$ i8 z( o' Q6 z. x2 ]" x
net.trainParam.show=50; % 设置训练参数
+ y; G. E3 _. x; I9 J# C
net.trainParam.lr=0.05;
/ Y0 {# F2 B! x! i3 Q0 T- k! @- E3 V
net.trainParam.mc=0.9;
j( J+ S. v b, H$ p
net.trainParam.epochs=7000;
- t0 j* D+ [1 i8 P
net.trainParam.goal=1e-3;
! V8 f2 C8 C& |1 Q2 b! z# J9 O6 }+ @
[net,tr]=train(net,P,T);
7 D7 O; S- }! ?1 \. q
y=[8000 9000 10000;
* j) P* s6 R' N% H) {; G
9000 10000 11000;
% H c2 s9 ]- H# j9 W
10000 11000 12000;];
* l n! A$ u( d% P
for i=1:3
+ S9 p( T7 {' s2 R# m7 Q7 a4 o
y(i,
=(y(i,
-min(p(i,
))/(max(p(i,
)-min(p(i,
));
" T9 h! F5 ]2 {, K0 b4 D
end
: p1 I3 O/ j6 P! _$ A
x=sim(net,y);
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5