class_docstr: Top-level loop where validation/testing starts.
code: def __init__(
      self,
      trainer: "pl.Trainer",
      trainer_fn: TrainerFn,
      stage: RunningStage,
      verbose: bool = True,
      inference_mode: bool = True,
  ) -> None:
      super().__init__(trainer)
      self.verbose = verbose
      self.inference_mode = inference_mode
      self.batch_progress = _BatchProgress()  # across dataloaders
      self._max_batches: List[Union[int, float]] = []
  
      self._results = _ResultCollection(training=False)
      self._logged_outputs: List[_OUT_DICT] = []
      self._has_run: bool = False
      self._trainer_fn = trainer_fn
      self._stage = stage
      self._data_source = _DataLoaderSource(
          None, f"{stage.dataloader_prefix}_dataloader"
      )
      self._combined_loader: Optional[CombinedLoader] = None
      self._data_fetcher: Optional[_DataFetcher] = None
      self._seen_batches_per_dataloader: DefaultDict[
          int, int
      ] = defaultdict(int)
      self._last_val_dl_reload_epoch = float("-inf")
      self._module_mode = _ModuleMode()
  
imports: import os
  import shutil
  import sys
  from collections import ChainMap, OrderedDict, defaultdict
  from typing import Any, DefaultDict, Iterable, Iterator, List, Optional, Tuple, Union
  from lightning_utilities.core.apply_func import apply_to_collection
  from torch import Tensor
  import lightning.pytorch
  from lightning.fabric.utilities.data import _set_sampler_epoch
  from lightning.pytorch.callbacks.progress.rich_progress import _RICH_AVAILABLE
  from lightning.pytorch.loops.fetchers import _DataFetcher, _DataLoaderIterDataFetcher
  from lightning.pytorch.loops.loop import _Loop
  from lightning.pytorch.loops.progress import _BatchProgress
  from lightning.pytorch.loops.utilities import _no_grad_context, _select_data_fetcher, _verify_dataloader_idx_requirement
  from lightning.pytorch.trainer import call
  from lightning.pytorch.trainer.connectors.data_connector import _check_dataloader_iterable, _DataLoaderSource, _parse_num_batches, _process_dataloader, _request_dataloader, _resolve_overfit_batches
  from lightning.pytorch.trainer.connectors.logger_connector.result import _OUT_DICT, _ResultCollection
  from lightning.pytorch.trainer.states import RunningStage, TrainerFn
  from lightning.pytorch.utilities.combined_loader import CombinedLoader
  from lightning.pytorch.utilities.data import has_len_all_ranks
  from lightning.pytorch.utilities.exceptions import SIGTERMException
  from lightning.pytorch.utilities.model_helpers import _ModuleMode, is_overridden
  from lightning.pytorch.utilities.signature_utils import is_param_in_hook_signature
label_desc: Use image node_id 1 to create a new _EvaluationLoop object from inherited base classes: _Loop with example: obj = _EvaluationLoop(trainer, trainer_fn, stage, verbose, inference_mode)