Я пытаюсь запустить 'fminun c' несколько раз для l oop.
Часть кода:
P = 0.70 ;
idx = randperm(m);
X_Training = X(idx(1:round(P*m)),:);
X_Testing = X(idx(round(P*m)+1:end),:);
y_Traning = y(idx(1:round(P*m)),:);
y_Testing = y(idx(round(P*m)+1:end),:);
s = 100;
border_all = zeros( 2, s );
lambda = 1;
accuracy = 0;
initial_theta = zeros( n + 1, 1 );
options = optimset( 'GradObj', 'on', 'MaxIter', 400 );
for i = 1 : 1 : s
[theta, J, exit_flag] = fminunc( @(t) costFunctionReg( t, X_Training, y_Traning, lambda ), initial_theta, options );
for border = 0.01 : 0.01 : 1
p = predict( theta, X_Testing, border );
accuracy_t = mean( double( p == y_Testing ) ) * 100;
if accuracy_t > accuracy
accuracy = accuracy_t;
border_result = border;
endif
endfor
border_all(1, i) = border_result;
border_all(2, i) = accuracy;
endfor
Я использую выходные значения "theta msgstr "позже проверить другую изменяющуюся переменную" i "(для i = 1: 1: s ..). Каждый раз, когда я запускаю скрипт, вычисляется «тэта», но он не меняется в других «для l oop» итерациях. Тем не менее, он должен быть немного различным в каждой итерации.
В то же время, когда я перезапускаю скрипт, я получаю новые значения "theta". Итак, кажется, что он рассчитывается с нуля только на первой итерации, а не на других. Возможно, проблема с памятью. Пробовал «очистить» функцию, но результат тот же.
Кто-нибудь сталкивался с такой же проблемой?