class_docstr: A trainer with default training logic. It does the following:
  
  1. Create a :class:`SimpleTrainer` using model, optimizer, dataloader
     defined by the given config. Create a LR scheduler defined by the config.
  2. Load the last checkpoint or `cfg.MODEL.WEIGHTS`, if exists, when
     `resume_or_load` is called.
  3. Register a few common hooks defined by the config.
  
  It is created to simplify the **standard model training workflow** and reduce code boilerplate
  for users who only need the standard training workflow, with standard features.
  It means this class makes *many assumptions* about your training logic that
  may easily become invalid in a new research. In fact, any assumptions beyond those made in the
  :class:`SimpleTrainer` are too much for research.
  
  The code of this class has been annotated about restrictive assumptions it makes.
  When they do not work for you, you're encouraged to:
  
  1. Overwrite methods of this class, OR:
  2. Use :class:`SimpleTrainer`, which only does minimal SGD training and
     nothing else. You can then add your own hooks if needed. OR:
  3. Write your own training loop similar to `tools/plain_train_net.py`.
  
  See the :doc:`/tutorials/training` tutorials for more details.
  
  Note that the behavior of this class, like other functions/classes in
  this file, is not stable, since it is meant to represent the "common default behavior".
  It is only guaranteed to work well with the standard models and training workflow in detectron2.
  To obtain more stable behavior, write your own training logic with other public APIs.
  
  Examples:
  ::
      trainer = DefaultTrainer(cfg)
      trainer.resume_or_load()  # load last checkpoint or MODEL.WEIGHTS
      trainer.train()
  
  Attributes:
      scheduler:
      checkpointer (DetectionCheckpointer):
      cfg (CfgNode):
code: def state_dict(self):
      ret = super().state_dict()
      ret["_trainer"] = self._trainer.state_dict()
      return ret
  
imports: import argparse
  import logging
  import os
  import sys
  import weakref
  from collections import OrderedDict
  from typing import Optional
  import torch
  from fvcore.nn.precise_bn import get_bn_modules
  from omegaconf import OmegaConf
  from torch.nn.parallel import DistributedDataParallel
  import detectron2.data.transforms
  from detectron2.checkpoint import DetectionCheckpointer
  from detectron2.config import CfgNode, LazyConfig
  from detectron2.data import MetadataCatalog, build_detection_test_loader, build_detection_train_loader
  from detectron2.evaluation import DatasetEvaluator, inference_on_dataset, print_csv_format, verify_results
  from detectron2.modeling import build_model
  from detectron2.solver import build_lr_scheduler, build_optimizer
  from detectron2.utils import comm
  from detectron2.utils.collect_env import collect_env_info
  from detectron2.utils.env import seed_all_rng
  from detectron2.utils.events import CommonMetricPrinter, JSONWriter, TensorboardXWriter
  from detectron2.utils.file_io import PathManager
  from detectron2.utils.logger import setup_logger
  from .None import hooks
  from .train_loop import AMPTrainer, SimpleTrainer, TrainerBase
label_desc: Use image node_id 7 for calling the DefaultTrainer obj's underlying member method code with example usage: obj.state_dict() and returns: ret