-record(optimizer, { kind :: viva_tensor@nn@optim:optimizer_kind(), lr :: float(), momentum :: float(), beta1 :: float(), beta2 :: float(), eps :: float(), weight_decay :: float(), state :: gleam@dict:dict(binary(), viva_tensor@nn@optim:param_state()) }).