Octave/MatLab 中矩阵的梯度函数
Gradient function on a matrix in Octave/MatLab
我正在尝试在 Octave/Matlab 中实现梯度下降算法。我正处于这个 201x201 矩阵称为 errors
的位置,我假设它对应于一个 2 输入变量函数 f(x, y)
。当用 imagesc
显示时,矩阵给出了一个很好的渐变图像,但我对何时计算 [dx, dy] = gradient(errors)
感到困惑。我将 dx
和 dy
都设为二维矩阵 (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
返回的信息如何足以绘制整个梯度矢量场。
我正在尝试在 Octave/Matlab 中实现梯度下降算法。我正处于这个 201x201 矩阵称为 errors
的位置,我假设它对应于一个 2 输入变量函数 f(x, y)
。当用 imagesc
显示时,矩阵给出了一个很好的渐变图像,但我对何时计算 [dx, dy] = gradient(errors)
感到困惑。我将 dx
和 dy
都设为二维矩阵 (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
返回的信息如何足以绘制整个梯度矢量场。