law backward_twice_accumulates

bendtorch-core@0.1.0.0 · src/autograd/backward_LAWS.bend:432

import bendtorch-core@0.1.0.0/src/autograd/backward_LAWS.bend as BackwardLAWS
import Base
import bendtorch-core@0.1.0.0/src/autograd/backward.bend as Backward

432# Repeated backward, like PyTorch's backward(retain_graph=True): the second
433# backward computes the same gradients and accumulates them again.
434law backward_twice_accumulates:
435  for +entries: List<&2, Backward.Entry>
436  for +output: Nat
437  for +found: List<&2, Maybe<&2, F32>>
438  for +computed: {Backward.gradients(Backward.Tape{entries}, output) == Done{found} : Result<&2, &2, Backward.Error, List<&2, Maybe<&2, F32>>>}
439  {again(Backward.backward(Backward.Tape{entries}, output), output) ==
440    Done{Backward.Tape{Backward.merge(Backward.merge(entries, found), found)}} : Result<&2, &2, Backward.Error, Backward.Tape>}

Uses (16)

Used by (0)

No other definition uses this definition.