请耐心等待。问题在最后。我试图找出 fminunc 调用方式的差异。
此问题源自 Andrew Ng 在他的 Coursera 机器学习类(class)中的第 3 周 Material 。 我正在回答这个问题。 Matlab: Meaning of @(t)(costFunction(t, X, y)) from Andrew Ng's Machine Learning class
我试图理解论证的含义
@(t) ( costFunction(t, X, y) )
用户wolfie,将其显示为缩短版本。谁能解释为什么表达本身必须是这样的?在视频讲座中,他运行了这样的函数
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
其中程序文件的 costFunction
输入和输出给出如下:
function [jVal, gradient] = costFunction(theta)
练习提供的代码具有以下版本的函数:
costFunction(theta, X, y)
.
为什么没有像第二种情况那样调用 fminunc 而没有匿名函数,这就是为什么它被称为:
[theta,成本] = fminunc(@(t)(costFunction(t,X,y)),initial_theta,选项);
而不是:
[theta,cost] = fminunc(@costFunction,initial_theta,options);
?
最佳答案
成本函数应将要优化的参数作为输入,并返回要最小化的函数值。如果成本函数需要输入除待优化参数之外的输入,则可以使用匿名函数形式:
funHandle = @(t) ( costFunction(t, X, y) );
除了要优化的t之外,这还允许您传递额外的输入X和y。你可以检查 this link从 Mathworks 获取更多信息。
关于matlab - 了解 fminunc 参数和匿名函数、函数处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875913/