% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/optim-adam.R
\name{optim_adam}
\alias{optim_adam}
\title{Implements Adam algorithm.}
\usage{
optim_adam(
  params,
  lr = 0.001,
  betas = c(0.9, 0.999),
  eps = 1e-08,
  weight_decay = 0,
  amsgrad = FALSE
)
}
\arguments{
\item{params}{(iterable): iterable of parameters to optimize or dicts defining
parameter groups}

\item{lr}{(float, optional): learning rate (default: 1e-3)}

\item{betas}{(\code{Tuple[float, float]}, optional): coefficients used for computing
running averages of gradient and its square (default: (0.9, 0.999))}

\item{eps}{(float, optional): term added to the denominator to improve
numerical stability (default: 1e-8)}

\item{weight_decay}{(float, optional): weight decay (L2 penalty) (default: 0)}

\item{amsgrad}{(boolean, optional): whether to use the AMSGrad variant of this
algorithm from the paper \href{https://openreview.net/forum?id=ryQu7f-RZ}{On the Convergence of Adam and Beyond}
(default: FALSE)}
}
\description{
It has been proposed in \href{https://arxiv.org/abs/1412.6980}{Adam: A Method for Stochastic Optimization}.
}
\section{Warning}{
If you need to move a model to GPU via \verb{$cuda()}, please do so before
constructing optimizers for it. Parameters of a model after \verb{$cuda()}
will be different objects from those before the call. In general, you
should make sure that the objects pointed to by model parameters subject
to optimization remain the same over the whole lifecycle of optimizer
creation and usage.
}

\examples{
if (torch_is_installed()) {
\dontrun{
optimizer <- optim_adam(model$parameters(), lr = 0.1)
optimizer$zero_grad()
loss_fn(model(input), target)$backward()
optimizer$step()
}

}
}
