عضو جدید
تاريخ عضويت: تير ۱۳۹۰
پست ها: 2
تشكرها: 0
0 تشكر در 0 پست
|
مشکل در برنامه نویسی شبکه عصبی با الگوریتم آموزشی lm
برنامه زیر برای پیش بینی آلاینده های موتور نوشتم ولی موقع ران خطای زیر را نشان میدهد اونم وقتی که val,test تو دستور trainباشد(دستوری که با خط قرمز نوشته شده است رو اون خطا نشان میده) خطای زیر را را نشان میدهد. خیلی هم تلاش کردم نتونستم به جایی برسم وخطای نشان داده شده را قبل برنامه گذاشتم از مهندسین عزیز کسی در این مورد کمکم کنه ممنون میشم خیلی مخلصیم
كد:
??? Error using ==> v51_train_arg6 at 11
كد:
VV.P must be defined or VV must be [].
Error in ==> network.train at 133
case 6, [net,tr,Y,E,Xf,Af] =
v51_train_arg6(net,X,T,Xi,Ai,arg6); return
Error in ==> ANNs at 31
[net,tr]=train(net,ptrn,ttrn,[],[],val);%,test
);
>>
كد:
clear
echo on
%8888888888888888888888888888888888
load('D:\data engine\input.txt');
p=input;
load('D:\data engine\outputemission.txt');
t=outputemission;
%===========================================
%[pn,meanp,stdp,tn,meant,stdt] = prestd(p,t);
%[ptrans,transMat] = prepca(p,0.001);
%[R,Q] = size(ptrans);
%R=3;
%Q=32;
iitst = 2 : 4 : 32;
iival = 4 : 4 : 32;
iitr = [1 : 4 : 32 3 : 4 : 32];
val.p = p(:,iival); val.t = t(:,iival);
test.p = p(:,iitst); test.t = t(:,iitst);
ptr = p(:,iitr); ttr = t(:,iitr);
[ptrn,minp,maxp,ttrn,mint,maxt]=premnmx(ptr,ttr); %normalizes
[val.pn,minp,maxp,val.tn,mint,maxt]=premnmx(val.p,val.t);
[test.pn,minp,maxp,test.tn,mint,maxt]=premnmx(test.p,test.t); %normalizes
net = newff(minmax(ptrn),[10 6 5],{'tansig' 'tansig' 'purelin'},'traingdx');
net.trainParam.epochs=10000;
net.trainParam.show=50;
net.trainParam.lr=0.3;
net.trainParam.mc=0.3
net.trainParam.goal=.001;
net.performFcn='mse';
[net,tr]=train(net,ptrn,ttrn,[],[],val);%,test);
plot(tr.epoch,tr.perf,tr.epoch,tr.vperf,tr.epoch,tr.tperf)
legend('Training','Validation','Test',-1);
ylabel('Squared Error'); xlabel('Epoch')
an = sim(net,test.pn);
a = postmnmx(an,mint,maxt);
[m,b,r]=postreg(a,test.t);
for i=1 : 1 : 5
figure(i)
[m(i),b(i),r(i)] = postreg(a(i, : ),test.t(i, : ));
end
m,b,r
err = 100*abs(test.t - a)./test.t;
me = mean(mean(err));
|