Octave/MatLab 中矩阵的梯度函数

Gradient function on a matrix in Octave/MatLab

我正在尝试在 Octave/Matlab 中实现梯度下降算法。我正处于这个 201x201 矩阵称为 errors 的位置,我假设它对应于一个 2 输入变量函数 f(x, y)。当用 imagesc 显示时,矩阵给出了一个很好的渐变图像,但我对何时计算 [dx, dy] = gradient(errors) 感到困惑。我将 dxdy 都设为二维矩阵 (201x201) 而不是简单向量。我会假设,因为我们计算了关于 x (resp. y)、y (resp. x) 的偏导数,所以它会从运算结果中消失。我很确定我遗漏了一些东西,尽管我觉得我对函数梯度的工作原理有足够的了解。预先感谢您的回答。

梯度存在于一点。您的 gradient 表达式正在评估所有 201x201 点的(数值)梯度。

所以比如errors在点(3,4)的梯度就是向量[dx(3,4), dy(3,4)].

这个例子可能会有所帮助:https://www.mathworks.com/help/matlab/ref/gradient.html#bvhqkfr注意 gradient 返回的信息如何足以绘制整个梯度矢量场。