def vjp_cross_entropy
bendtorch-core@0.1.0.0 · src/autograd/tensor_backward.bend:505
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/tensor/elementwise.bend as Elementwise
import bendtorch-core@0.1.0.0/src/autograd/loss.bend as Loss
505
506
507
508
509
510
511
512
513
514def vjp_cross_entropy(+a: Nat, +input: Shape.Shape, saved: Saved, g: Core.Dynamic) -> Pass:
515 match saved:
516 case Unsaved{}:
517 Pass{Unsaved{}, g, Fail{TensorError{Core.StorageLengthMismatch{}}}}
518 case Operands{lp, onehot}:
519 entropy_first(a, input, Loss.count_f32(Loss.rows(input)), Loss.one_class(input), lp,
520 Elementwise.binary(Elementwise.OneHotGrad{Loss.count_f32(Loss.rows(input))}, g, onehot))