class_docstr: Performs automatic optimization (forward, zero grad, backward, optimizer step)
code: def __init__(self, trainer: "pl.Trainer") -> None:
      super().__init__(trainer)
      self.optim_progress: _OptimizationProgress = (
          _OptimizationProgress()
      )
      self._skip_backward: bool = False
  
imports: from dataclasses import dataclass, field
  from functools import partial
  from typing import Any, Callable, Dict, Mapping, Optional, OrderedDict
  import torch
  from torch import Tensor
  from torch.optim import Optimizer
  from typing_extensions import override
  import lightning.pytorch
  from lightning.pytorch.loops.loop import _Loop
  from lightning.pytorch.loops.optimization.closure import AbstractClosure, OutputResult
  from lightning.pytorch.loops.progress import _OptimizationProgress
  from lightning.pytorch.loops.utilities import _block_parallel_sync_behavior
  from lightning.pytorch.trainer import call
  from lightning.pytorch.utilities.exceptions import MisconfigurationException
  from lightning.pytorch.utilities.rank_zero import WarningCache
  from lightning.pytorch.utilities.types import STEP_OUTPUT
label_desc: Use image node_id 1 to create a new _AutomaticOptimization object from inherited base classes: _Loop with example: obj = _AutomaticOptimization(trainer)