我試圖向前饋送反向傳播,但是在網絡訓練之后,當模擬和打印模擬輸出時,我看不到任何靠近目標的值,但它只是一個數字。
代碼如下。什么是錯,什么是問題?
前饋反向傳播:
>> 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是網絡輸出中的第二列。
這個輸出不能滿足它必須做的事情,因為如果我給其他的模擬集合,它是相同的,輸出必須接近真正的目標。