def merged_entry

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

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
import bendtorch-core@0.1.0.0/src/autograd/gradient.bend as Gradient

867# Accumulates each working gradient into its entry's slot. A refusal keeps
868# the slot and is reported after the walk.
869def merged_entry(node: Node, +shape: Shape.Shape, value: Core.Dynamic, saved: Saved, outcome: Gradient.Outcome,
870  pair: List<&1, Entry> & Result<&2, &2, Error, Unit>) -> List<&1, Entry> & Result<&2, &2, Error, Unit>:
871  match outcome:
872    case Gradient.Accumulated{slot}:
873      (rest, result) = pair
874      (Entry{node, shape, value, saved, slot} <> rest, result)
875    case Gradient.Refused{slot, contribution, error}:
876      (rest, result) = pair
877      (Entry{node, shape, value, saved, slot} <> rest, Fail{GradientError{error}})

Uses (12)

Used by (3)