def sgd_l

bendtorch@1.3.0.0 · main.bend:238

import bendtorch@1.3.0.0/main.bend as Bendtorch
import Base
import bend-ml-tensor-array@0.1.18.0/main.bend as TA

238# w <- w + (-lr)*g, as PyTorch's p.add_(g, alpha=-lr)
239def sgd_l(nleft: Nat, +t: U32, +lr: F32, rw: Array<F32> & F32, rg: Array<F32> & F32) -> TA.P2:
240  match nleft rw rg:
241    case 0n Tuple{w, x} Tuple{g, y}:
242      TA.P2{w, g}
243    case 1n+p Tuple{w, +x} Tuple{g, +y}:
244      sgd_l(p, (t + 1 : U32), lr, Array.get(F32, Array.set(F32, w, t, (x + (F32.neg(lr) * y : F32) : F32)), (t + 1 : U32)), Array.get(F32, Array.set(F32, g, t, 0.0), (t + 1 : U32)))

Uses (13)

Used by (2)