You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MXNet中矩阵x的2x²导数为何等于4x?

关于MXNet中矩阵求导的疑问解答

先看你提到的代码示例:

from mxnet import nd
from mxnet import autograd
    
x = nd.array([[1, 2], [3, 4]])
x.attach_grad()
with autograd.record():
    y = 2* x * x

y.backward()
print(x.grad)

你疑惑的点在于:x是2×2矩阵,为什么求导后x.grad等于4*x?

核心原因是这里的运算和求导都是逐元素进行的:

  • 首先,y = 2 * x * x是对x中的每个元素独立计算的,也就是对于x里的每个元素x_ij,对应的y元素是2 * x_ij * x_ij = 2x_ij²。
  • 当调用y.backward()时,默认会把y中所有元素的和作为总损失来求导(等价于y.sum().backward())。对于每个x_ij,它只影响对应的y_ij,所以对x_ij的导数就是2*2x_ij = 4x_ij,对x中其他元素的导数都是0。
  • 最终x.grad的每个元素就是对应x_ij的导数,也就是4*x_ij,整体来看就是4*x。

简单说,矩阵在这里就是多个独立实数元素的集合,逐元素运算的导数自然也是逐元素对应的结果,所以会得到和实数情况一致的逐元素导数。

内容的提问来源于stack exchange,提问作者firstname gklsodascb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:09:55