我正在分析MATLAB的fminunc函数的优化过程。
有没有办法在所有迭代中获得渐变值数组?
由于
答案 0 :(得分:1)
是的,确实如此。应使用Output Function:
function optim_test
grad_array= []; % initial array size is unknown
f= @(x)x(1).^2+x(2).^4; % just for example
options= optimset('OutputFcn',@outfun); % set the output function
x= fminunc(f,[1 1],options);
disp(grad_array);
function stop = outfun(x, optimValues, state)
grad_array(end+1,:)= optimValues.gradient;
stop= false;
end
end