我正在尝试在Octave / Matlab中实现梯度下降算法。我正处于这个名为errors
的201x201矩阵的位置,我假设它对应于2个输入变量函数f(x, y)
。当使用imagesc
显示时,矩阵会提供漂亮的渐变图像,但我在计算[dx, dy] = gradient(errors)
时感到困惑。我将dx
和dy
都取为2维矩阵(201x201)而不是简单的向量。我会假设,因为我们计算了关于x(相应的y),y(相应的x)的偏导数,所以它会从操作的结果中消失。我很确定我错过了一些东西,虽然我觉得我对函数渐变的工作原理有了足够的了解。提前谢谢你的回答。
答案 0 :(得分:0)
渐变存在于某一点。您的gradient
表达式正在评估所有201x201点的(数值)渐变。
例如,errors
点(3,4)
的渐变是向量[dx(3,4), dy(3,4)]
。
此示例可能有所帮助:https://www.mathworks.com/help/matlab/ref/gradient.html#bvhqkfr请注意gradient
返回的信息如何足以绘制渐变的整个矢量场。