struct SGD ps::Vector{Any} η::Float32 end sgd(m, η) = SGD(params(m), η) function update!(o::SGD) for p in o.ps x, Δ = data(p), grad(p) x .-= Δ .* o.η end end