def leaf_refusal
bendtorch-core@0.1.0.0 · src/autograd/sgd.bend:32
import bendtorch-core@0.1.0.0/src/autograd/sgd.bend as Sgd
import Base
import bendtorch-core@0.1.0.0/src/autograd/tensor_backward.bend as Backward
32def leaf_refusal(node: Backward.Node) -> Maybe<&2, Error>:
33 match node:
34 case Backward.Leaf{}:
35 None{}
36 case Backward.Add{a, b, left, right}:
37 Some{NotLeaf{}}
38 case Backward.Sub{a, b, left, right}:
39 Some{NotLeaf{}}
40 case Backward.Mul{a, b, left, right}:
41 Some{NotLeaf{}}
42 case Backward.Sum{a, input}:
43 Some{NotLeaf{}}
44 case Backward.SumDims{a, input, kept}:
45 Some{NotLeaf{}}
46 case Backward.Matmul{a, b, left, right}:
47 Some{NotLeaf{}}
48 case Backward.MatmulNT{a, b, left, right}:
49 Some{NotLeaf{}}
50 case Backward.Relu{a, input}:
51 Some{NotLeaf{}}
52 case Backward.MseLoss{a, b, left, right}:
53 Some{NotLeaf{}}
54 case Backward.CrossEntropy{a, input}:
55 Some{NotLeaf{}}
56 case Backward.BatchedMatmul{a, b, left, right}:
57 Some{NotLeaf{}}
58 case Backward.Slice{a, input, kept, plan}:
59 Some{NotLeaf{}}
60 case Backward.Gathered{a, input, plan, entries}:
61 Some{NotLeaf{}}
62 case Backward.Constant{}:
63 None{}
64 case Backward.Frozen{id, inner}:
65 leaf_refusal(inner)