2012-12-16 178 views
0

我試圖用nprtool訓練一個神經網絡,並手動調用newpr和train方法。 我用定向行的樣品,而不是默認爲列Matlab:神經網絡訓練的問題

nprtool

使用nprtool是沒有問題的,但是當我打電話到自動生成的M文件,輸出是:

??? Error using ==> network.train at 145 
Targets are incorrectly sized for network. 
Matrix must have 24 columns. 

Error in ==> create_pr_net at 29 
[net,tr] = train(net,inputs,targets); 

我的投入是140x24,我的目標是140x3。

利用Matlab生成的代碼是:

function net = create_pr_net(inputs,targets) 
%CREATE_PR_NET Creates and trains a pattern recognition neural network. 
% 
% NET = CREATE_PR_NET(INPUTS,TARGETS) takes these arguments: 
% INPUTS - RxQ matrix of Q R-element input samples 
% TARGETS - SxQ matrix of Q S-element associated target samples, where 
%  each column contains a single 1, with all other elements set to 0. 
% and returns these results: 
% NET - The trained neural network 
% 
% For example, to solve the Iris dataset problem with this function: 
% 
% load iris_dataset 
% net = create_pr_net(irisInputs,irisTargets); 
% irisOutputs = sim(net,irisInputs); 
% 
% To reproduce the results you obtained in NPRTOOL: 
% 
% net = create_pr_net(inputs,targets); 

% Create Network 
numHiddenNeurons = 2000; % Adjust as desired 
net = newpr(inputs,targets,numHiddenNeurons); 
net.divideParam.trainRatio = 90/100; % Adjust as desired 
net.divideParam.valRatio = 5/100; % Adjust as desired 
net.divideParam.testRatio = 5/100; % Adjust as desired 

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

% Plot 
plotperf(tr) 
plotconfusion(targets,outputs) 

我使用Matlab的R2010a版本。

謝謝。

回答

3

如Matlab的幫助文件中提到:

輸入 - Q R-元素輸入樣本的RXQ矩陣 目標 - 器Q S元素相關的目標樣本SxQ矩陣

你可能需要一個輸入和目標矩陣,然後手動調用Matlab火車功能。

Input = Input';Taget = Target';

+0

我做到了,但結果是不一樣的。我不知道爲什麼。 –

+1

結果不一樣,意味着它可以編譯?結果可能取決於輸入和目標的預處理; nprtool可以做一個祕密規範化。只是猜測。 –