class_docstr: This class is an abstract base class (ABC) for models.
  To create a subclass, you need to implement the following five functions:
      -- <__init__>:                      initialize the class; first call BaseModel.__init__(self, opt).
      -- <set_input>:                     unpack data from dataset and apply preprocessing.
      -- <forward>:                       produce intermediate results.
      -- <optimize_parameters>:           calculate losses, gradients, and update network weights.
class_docstr_tok: ["This","class","is","an","abstract","base","class","(","ABC",")","for","models",".","To","create","a","subclass",",","you","need","to","implement","the","following","five","functions",":","--","<","__init__",">",":","initialize","the","class",";","first","call","BaseModel.__init__","(","self",",","opt",")",".","--","<","set_input",">",":","unpack","data","from","dataset","and","apply","preprocessing",".","--","<","forward",">",":","produce","intermediate","results",".","--","<","optimize_parameters",">",":","calculate","losses",",","gradients",",","and","update","network","weights","."]
docstr: Goes through the __REQUIRED_DATA__ and __REQUIRED_LABELS__ attribute of the model
  and verifies that the passed data object contains all required members.
  If something is missing it raises a KeyError exception.
docstr_tok: ["Goes","through","the","__REQUIRED_DATA__","and","__REQUIRED_LABELS__","attribute","of","the","model","and","verifies","that","the","passed","data","object","contains","all","required","members",".","If","something","is","missing","it","raises","a","KeyError","exception","."]
code: def verify_data(self, data, forward_only=False):
      """Goes through the __REQUIRED_DATA__ and __REQUIRED_LABELS__ attribute of the model
      and verifies that the passed data object contains all required members.
      If something is missing it raises a KeyError exception.
      """
      missing_keys = []
      required_attributes = self.__REQUIRED_DATA__
      if not forward_only:
          required_attributes += self.__REQUIRED_LABELS__
      for attr in required_attributes:
          if not hasattr(data, attr) or data[attr] is None:
              missing_keys.append(attr)
      if len(missing_keys):
          raise KeyError(
              "Missing attributes in your data object: {}. The model will fail to forward.".format(
                  missing_keys
              )
          )
  
imports: from collections import OrderedDict
  from abc import abstractmethod
  from typing import Optional, Dict, Any, List
  import os
  import torch
  from torch.optim.optimizer import Optimizer
  from torch.optim.lr_scheduler import _LRScheduler
  import logging
  from collections import defaultdict
  from torch_points3d.core.schedulers.lr_schedulers import instantiate_scheduler
  from torch_points3d.core.schedulers.bn_schedulers import instantiate_bn_scheduler
  from torch_points3d.utils.enums import SchedulerUpdateOn
  from torch_points3d.core.regularizer import *
  from torch_points3d.core.losses import instantiate_loss_or_miner
  from torch_points3d.utils.config import is_dict
  from torch_points3d.utils.colors import colored_print, COLORS
  from .model_interface import TrackerInterface, DatasetInterface, CheckpointInterface
label_desc: Use image node_id 44 for calling the BaseModel obj's underlying member method code with example usage: obj.verify_data(data, forward_only) without return types