import { DTypeGpu } from '../../../tensor/gpu/interface'; import { GPUTensor } from '../../../tensor/gpu/tensor'; import Tensor, { DType } from '../../../types'; import { Module } from '../../module'; import { Optimizer } from '../optimizer'; /** * Implements the Adam optimizer * * This is currently quite slow on the CPU and WASM backends. On the GPU * backend, one update step is only slightly slower than an update step of SGD * and will converge a lot quicker. */ export declare class Adam extends Optimizer { lr: number; beta1: number; beta2: number; epsilon: number; moment1?: (Tensor | undefined)[]; moment2?: (Tensor | undefined)[]; moments?: GPUTensor[]; t: number; constructor(model: Module, lr?: number, beta1?: number, beta2?: number, epsilon?: number); step(): void; updateMoments(grad: Tensor, moment1: Tensor | undefined, moment2: Tensor | undefined): { moment1New: Tensor; moment2New: Tensor; }; getCorrectedMoments(moment1: Tensor, moment2: Tensor): { correctMoment1: Tensor; correctMoment2: Tensor; }; paramStep(value: Tensor, grad: Tensor, moment1: Tensor | undefined, moment2: Tensor | undefined): { newValue: Tensor; moment1: Tensor | undefined; moment2: Tensor | undefined; }; gpuParamStep(value: GPUTensor, grad: GPUTensor, moments: GPUTensor): { newValue: import("../../../tensor/gpu/interface").GPUTensorI; moments: import("../../../tensor/gpu/interface").GPUTensorI; }; }