def smb_rows

bendtorch@1.3.0.0 · main.bend:1429

import bendtorch@1.3.0.0/main.bend as Bendtorch
import Base

1429# softmax backward, as PyTorch's: dx = y * (dy - sum(dy * y)), row after row, in place over dy
1430def smb_rows(left: Nat, +i: U32, +c: Nat, st: A2) -> A2:
1431  match left st:
1432    case 0n A2{d, y}:
1433      smb_row(c, (i * U32.from_nat(c) : U32), dot0(c, (i * U32.from_nat(c) : U32), (i * U32.from_nat(c) : U32), 1, 1, d, y))
1434    case 1n+q A2{d, y}:
1435      smb_rows(q, (i + 1 : U32), c, smb_row(c, (i * U32.from_nat(c) : U32), dot0(c, (i * U32.from_nat(c) : U32), (i * U32.from_nat(c) : U32), 1, 1, d, y)))

Uses (8)

Used by (1)