代码的一些规律 2026-07-07 · 1 min read 自动微分约定:梯度形状守恒 核心约定 对于标量损失 L∈RL \in \mathbb{R}L∈R,参数 xxx 的梯度形状严格等于 xxx 的形状: ∂L∂x∈Rn1×⋯×nk⟺x∈Rn1×⋯×nk\frac{\partial L}{\partial x} \in \mathbb{R}^{n_1 \times \cdots \times n_k} \quad\Longleftrightarrow\quad x \in \mathbb{R}^{n_1 \times \cdots \times n_k} ∂x∂L∈Rn1×⋯×nk⟺x∈Rn1×⋯×nk 即: shape(∂L∂x)≡shape(x)\text{shape}\left(\frac{\partial L}{\partial x}\right) \equiv \text{shape}(x) shape(∂x∂L)≡shape(x) 标量损失 LLL 是一个数值,对张量 xxx 的每个元素 xix_ixi 求偏导 ∂L∂xi\frac{\partial L}{\partial x_i}∂xi∂L,结果自然与 xxx 同形。 自动微分框架(PyTorch、JAX 等)的 x.grad 严格遵循此形状守恒,以便原地更新:x←x−η⋅gradx \leftarrow x - \eta \cdot \text{grad}x←x−η⋅grad。 评论
评论