2014-09-21 1 views
2

У меня есть parfor loop вроде этого:Переменная `x` в parfor не могут быть классифицированы в MATLAB

parfor i=1:20 

for j=1:5 
%% Some codes 

[~,~,~,AUC]=perfcurve(testTargets,testOutputs,'1'); 

AUC_T(i)=AUC; 

end 

%% averaging between AUC_Ts in outputs of j=1:5 

end 

У меня есть эта ошибка после запуска этого кода:

The variable AUC_T in a parfor cannot be classified. 
See Parallel for Loops in MATLAB, "Overview". 

Я хочу сохранить АУК значения и использовать его в качестве параметра parfor loop. В чем проблема и как я могу ее решить?

Благодаря

+0

Вы раньше пользовались parfor? Если нет, вы можете прочитать документы или резюме: http://blogs.mathworks.com/loren/2009/10/02/using-parfor-loops-getting-up-and-running/#12 –

ответ

0

Я нашел решение:

parfor i=1:20 

for j=1:5 
%% Some codes 

[~,~,~,AUC]=perfcurve(testTargets,testOutputs,'1'); 

AUC_T(i,j)=AUC; 

end 

end 

%% averaging between AUC_T values 

Мы должны установить усреднение после parfor.

Спасибо Michael Graczyk за ваш commnet и ответ.

0

Трудно сказать наверняка, не будучи в состоянии видеть больше коды, но вы, вероятно, можете решить вашу проблему с помощью массива ячеек для хранения результатов:

parfor i=1:20 
    ... 
    AUC_T{i}=AUC; 
end 

Или более просто, вы можете явно указать форму результата:

AUC_T(i, :) = AUC; 
+0

Это не решила проблему. Я тренирую нейронную сеть в цикле 'parfor'. Я могу хранить «обученную сеть» с помощью 'Net {m) = training_net', но у меня есть эта проблема только с' AUC'! – user2991243

+0

+ Я добавил дополнительную информацию к основному вопросу. Благодарю. – user2991243