请耐心等待。问题在最后。我试图找出fminunc被调用的区别。了解fminunc参数和匿名函数,函数处理函数
这个问题源于Andrew Ng在Coursera机器学习课程中的第3周材料。 我正在反弹这个问题。 Matlab: Meaning of @(t)(costFunction(t, X, y)) from Andrew Ng's Machine Learning class
我想明白的说法
@(t) (costFunction(t, X, y))
用户莫扎特的意义,显示了它作为一个缩短版。任何人都可以解释为什么表达本身必须是这样吗?在视频演讲中,他跑出这样
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options)
其中costFunction
输入和输出从程序文件中给出的函数:
function [jVal, gradient] = costFunction(theta)
的行使提供的代码有这个版本的功能: costFunction(theta, X, y)
。
为什么没有fminunc在第二种情况下叫不一样的匿名函数,这就是为什么它被称为:
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
,而不是为:
[theta, cost] = fminunc(@costFunction, initial_theta, options);
?
我编辑了这个问题,显然视频讲座中显示的是以theta作为参数的cost函数,但练习中提供的是costFunction(theta,X,y)。你的回答仍然指向了正确的方向,我发现它仍然是正确的。求解器fminunc只需要一个参数,但我们有一个函数可以接受多个函数,所以我们定义一个匿名函数,它只需要一个参数t,我们希望用求解器进行优化。 – heretoinfinity