Как работает эта функция fminun c (@ (t) (costFun ction (t, X, y, lambda)), начиная с Theta, параметры)? - PullRequest
0 голосов
/ 27 апреля 2020

Я использовал почти каждый ресурс, который мог найти, и до сих пор не нашел конкретного ответа на вопрос, который я задаю. Вот код вопроса

    X = data(:, 1:2);
    y = data(:,3);
    X = [ones(m, 1) X];
    startingTheta = zeros(n + 1, 1);
    lambda = 0;
    % Set options for fminunc, maximum iterations allowed is 500
    options = optimset('MaxIter', 500);
    % fminunc()
    % Optimization function that finds the min point of cost function J
    fprintf('Run fminunc');
    [theta, cost] = fminunc(@(t)(costFunction(t, X, y, lambda)), startingTheta, options);
    fprintf('Done \n');
    fprintf('Theta: %f \n', theta);
    fprintf('Cost at theta found by fminunc: %f\n', cost);

Как работает эта функция? Нигде в коде не определено. Какое значение передается в параметры t, X, y. Я наткнулся на этот ответ

X = 1; y = 1; % Defining variables which aren't passed into the costFunction          
% but which must exist for the next line to pass them as anything!
f = @(t)(costFunction(t, X, y)); % Explicitly define costFunction as a function of t alone
[theta, cost] = fminunc(f, 0, options); 

, но он действительно только смутил меня больше. X и y определяются только для того, чтобы не передаваться в функцию costFunction. т нигде не определено! Какие именно значения передаются в эти параметры? Код работает, я просто хочу знать, как / почему?

...