matlab - 了解 fminunc 参数和匿名函数、函数处理程序

标签 matlab

请耐心等待。问题在最后。我试图找出 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之外,这还允许您传递额外的输入Xy。你可以检查 this link从 Mathworks 获取更多信息。

关于matlab - 了解 fminunc 参数和匿名函数、函数处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875913/

相关文章:

matlab - 比较两个不等长的向量得到一个逻辑数组

python - 将复杂的 Matlab 引擎数组高效转换为 numpy ndarray

matlab - 如何绘制实心圆?

matlab - 计算单元格数组matlab中的单词

matlab - 以单行分号分隔格式显示矩阵

python - pylab 导入状态?

matlab - 索引移动极差

image - 为什么使用相同的 MATLAB 代码会得到不同颜色的图像?

MatLab AccumArray 意外改变顺序

Matlab计算数组中所有(u,v)向量的最近邻距离