我试图向前馈送反向传播,但是在网络训练之后,当模拟和打印模拟输出时,我看不到任何靠近目标的值,但它只是一个数字。
代码如下。什么是错,什么是问题?
前馈反向传播:
>> load('E:/Inputdata.txt');
>> load('E:/Targetdata.txt');
>> P = Inputdata(1:406,1:3);
>> T = Targetdata(1:406,1);
>> S = Inputdata(407:507,1:3);
>> Y = Targetdata(407:507,1);
>> [pn,minp,maxp,tn,mint,maxt]=premnmx(P',T');
>> [sn,mins,maxs,yn,miny,maxy]=premnmx(S',Y');
>> net =newff(minmax(pn),[5 2 1],{'tansig','tansig','tansig'},'traingdm');
>> net.trainParam.show = 50;
>> net.trainParam.lr = 0.4;
>> net.trainParam.epochs = 3200;
>> net.trainParam.goal = 1e-5;
>> net=train (net,pn,tn);
>> A = sim (net,sn);
>> Z=postmnmx(A',miny,maxy);
>> [Y Z]
75.8810 80.0903
76.5849 80.0903
77.2888 80.0903
77.9927 80.0903
78.6966 80.0903
79.4005 80.0903
80.1044 80.0903
80.8083 80.0903
128.6739 80.0903
129.3778 80.0903
130.0817 80.0903
130.7856 80.0903
131.4895 80.0903
132.1934 80.0903
132.8973 80.0903
133.6012 80.0903Y是真正的目标,Z是网络输出中的第二列。
这个输出不能满足它必须做的事情,因为如果我给其他的模拟集合,它是相同的,输出必须接近真正的目标。