数学建模社区-数学中国
标题:
跪求懂神经网络的大哥进来指点下小弟
[打印本页]
作者:
yqxxqy
时间:
2009-9-2 16:00
标题:
跪求懂神经网络的大哥进来指点下小弟
我刚学习神经网络,练了个简单的例子:第一年工资1000,第二年2000,第三年3000,第四年4000。。。。。依此类推,样本一直到第10年的10000;
5 Z* N5 X& d; @9 D1 S
我用前三年的做为输入,第四年的作为目标训练;
" O: y, O9 R0 N3 e( d, d9 f
先将样本归一化,但之后做预测就出现问题了,用第8,9,10年的做输入,预测第11年的结果就不对了,个人觉得应该是后面输入数据归一化的问题,但不知道怎么改。
6 g n4 V# {8 b R9 s6 K, N
具体程序如下:
' k9 [, W' f3 f* `. ?3 S
p=[1000,2000,3000,4000,5000,6000,7000;
% c- q. }( k- S" U. S
2000,3000,4000,5000,6000,7000,8000;
7 _6 c; _+ \! A9 @& _$ w/ ~
3000,4000,5000,6000,7000,8000,9000];
% k( R" n4 w. \0 G1 j9 ]
t=[4000,5000,6000,7000,8000,9000,10000];
: g2 ?5 J( L* ?0 r6 k! J6 z
for i=1:3
; Y m/ y5 D( g. t
P(i,
=(p(i,
-min(p(i,
))/(max(p(i,
)-min(p(i,
));%归一化
. v, D9 |- ]5 \5 M: k) g
end
& z- j w; {+ B( @- }
T=(t-min(t))/(max(t)-min(t));
, Q1 k! g' j7 |1 L+ k. k
net=newff(minmax(P),[3,1],{'logsig','purelin'},'traingdx')
$ D, H* Z$ o! g) Q* o$ S
inputWeights=net.IW{1,1}; % 当前输入层权值和阀值
/ B. }/ ?) ?) M7 |( A3 c
inputbias=net.b{1};
0 O) y1 m: e- I- ~4 e3 m; J
layerWeights=net.LW{2,1};% 当前网络层权值和阀值
4 |0 T3 ]7 W6 K7 n/ M6 z# L
layerbias=net.b{2};
3 H6 V+ w3 R6 p% x9 f" i
net.trainParam.show=50; % 设置训练参数
. g& A8 R* f! `) h( G
net.trainParam.lr=0.05;
7 b8 ^( s+ j0 F2 B
net.trainParam.mc=0.9;
- _6 l" }, c3 R
net.trainParam.epochs=7000;
# u. u8 A% _8 X) ^0 \8 D2 S
net.trainParam.goal=1e-3;
7 |) L3 U- p) P3 f" u, R
[net,tr]=train(net,P,T);
$ y) @, O) n+ K* `
y=[8000 9000 10000;
& {7 |( {; B! z, [; ~. l, `6 `. O
9000 10000 11000;
+ u) j7 S* c% r; M( n) u
10000 11000 12000;];
" K @3 O/ m- i' g& R) _
for i=1:3
1 J" `- s7 f% \% ?3 K' a# y6 m
y(i,
=(y(i,
-min(p(i,
))/(max(p(i,
)-min(p(i,
));
* p; ~, }2 H2 D/ c9 r% b1 y
end
0 W1 E" a" e a( ~( L& \0 C
x=sim(net,y);
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5