class_docstr: DRÆM: A discriminatively trained reconstruction embedding for surface anomaly detection.
  
  Args:
      hparams (DictConfig | ListConfig): Model parameters
class_docstr_tok: ["DR\u00c6M",":","A","discriminatively","trained","reconstruction","embedding","for","surface","anomaly","detection",".","Args",":","hparams","(","DictConfig","|","ListConfig",")",":","Model","parameters"]
docstr: Configure the Adam optimizer.
docstr_tok: ["Configure","the","Adam","optimizer","."]
code: def configure_optimizers(
      self,
  ) -> tuple[
      list[torch.optim.Optimizer],
      list[torch.optim.lr_scheduler.LRScheduler],
  ]:
      """Configure the Adam optimizer."""
      optimizer = torch.optim.Adam(
          params=self.model.parameters(), lr=self.hparams.model.lr
      )
      scheduler = torch.optim.lr_scheduler.MultiStepLR(
          optimizer, milestones=[400, 600], gamma=0.1
      )
      return [optimizer], [scheduler]
  
imports: from __future__ import annotations
  from typing import Callable
  import torch
  from omegaconf import DictConfig, ListConfig
  from pytorch_lightning.callbacks import EarlyStopping
  from pytorch_lightning.utilities.types import STEP_OUTPUT
  from torch import Tensor, nn
  from anomalib.data.utils import Augmenter
  from anomalib.models.components import AnomalyModule
  from anomalib.models.draem.loss import DraemLoss
  from anomalib.models.draem.torch_model import DraemModel
label_desc: Use image node_id 3 for calling the DraemLightning obj's underlying member method code with example usage: obj.configure_optimizers() and returns: list,  list