def vjp_matmul

bendtorch-core@0.1.0.0 · src/autograd/tensor_backward.bend:364

import bendtorch-core@0.1.0.0/src/autograd/tensor_backward.bend as TensorBackward
import Base
import bendtorch-core@0.1.0.0/src/shape/core.bend as Shape
import bendtorch-core@0.1.0.0/src/tensor/core.bend as Core

364# d(a@b)/da: g @ b^T; d(a@b)/db: a^T @ g, with the operand values saved at
365# record time.
366def vjp_matmul(+a: Nat, +b: Nat, +left: Shape.Shape, +right: Shape.Shape, saved: Saved, g: Core.Dynamic) -> Pass:
367  match saved:
368    case Unsaved{}:
369      Pass{Unsaved{}, g, Fail{TensorError{Core.StorageLengthMismatch{}}}}
370    case Operands{x, y}:
371      matmul_first(a, b, left, right, x, y, Core.clone_dynamic(g))

Uses (10)

Used by (1)