2011-05-03 150 views
2

有人可以告訴我,如果我的代碼是錯誤的,而試圖訓練我的網絡模式識別?我很絕望,因爲嘗試一切,因爲改變Hn,時代,規範化我的數據等......但是網絡似乎並沒有發展。Matlab神經網絡不是學習

下面是代碼

net = newff(p,t,15,{},'traingd'); 
net.divideParam.trainRatio = 70/100; % Adjust as desired 
net.divideParam.valRatio = 15/100; % Adjust as desired 
net.divideParam.testRatio = 15/100; % Adjust as desired 
net.trainParam.epochs = 10000; 
net.trainParam.goal = 0.01; 
net.trainParam.show = 25; 
net.trainParam.time = inf; 
net.trainParam.min_grad = 1e-10; 
net.trainParam.max_fail = 10; 
net.trainParam.sigma = 5.0e-5; 
net.trainParam.lambda = 5.0e-7; 
net.trainParam.mu_max = 1e-20; 
net.trainParam.lr = 0.001; 

% Train and Apply Network 
[net,tr] = train(net,p,t); 
outputs = sim(net,p); 

% Create P. 

% Plot 
plotperf(tr) 
plotfit(net,p,t) 
plotregression(t,outpts) 

我運行它正是這樣。 pt分別是我的輸入和目標。 是否只是我,當試圖運行工具箱(nprtool)不能引入目標,除非它來自演示?

回答

2

當您啓動GUI(nprtool),你應該能夠選擇從工作區中的變量目標(和輸入):

nprtool

關於你提到的第一個問題:

  • 你可以嘗試學習合成數據(當然適合模型)嗎?
  • 你可以嘗試使用默認的trainlm選項而不是traingd
+0

謝謝你的支持。我確實使用了工作區中的變量。發生什麼事是,當我打開目標時,它不會給我改變選擇?????我可以問別的嗎?我兩次能夠訓練網絡,一旦我改變了目標,它就不會繼續訓練。我想這可能是因爲體重,我很幸運,在一週內它可以工作兩次。你知道什麼是最好的權重開始?非常感謝你 – Paulo 2011-05-04 11:42:46

+0

這可能是由於有問題的數據造成的,如果數據沒有遵循神經網絡模型,那麼算法可能不會收斂。 – 2011-05-04 11:49:58

+0

但我不明白爲什麼它會在我嘗試多次的時候收斂兩次。 Trainlm正常地給我一個更糟的MSE。我開始絕望了,是不是總是這樣?我想嘗試weka,但有空間問題,XMx沒有解決它:( – Paulo 2011-05-04 11:55:17