code: def forward(self, *input, **kwargs):
      # Augment & forward
      if isinstance(self.augment_fn, dict):
          if len(input) != 0:
              raise ValueError(
                  "Input for GeneralizedTTA must not have positional arguments when augment_fn is dictionary"
              )
          augmented_inputs = dict(
              (key, augment(kwargs[key]))
              for (key, augment) in self.augment_fn.items()
          )
          outputs = self.model(**augmented_inputs)
      elif isinstance(self.augment_fn, (list, tuple)):
          if len(kwargs) != 0:
              raise ValueError(
                  "Input for GeneralizedTTA must be exactly one tensor"
              )
          augmented_inputs = [
              augment(x) for x, augment in zip(input, self.augment_fn)
          ]
          outputs = self.model(*augmented_inputs)
      else:
          if len(input) != 1:
              raise ValueError(
                  "Input for GeneralizedTTA must be exactly one tensor"
              )
          if len(kwargs) != 0:
              raise ValueError(
                  "Input for GeneralizedTTA must be exactly one tensor"
              )
          augmented_input = self.augment_fn(input[0])
          outputs = self.model(augmented_input)
  
      # Deaugment outputs
      if isinstance(self.deaugment_fn, dict):
          if not isinstance(outputs, dict):
              raise ValueError("Output of the model must be a dict")
  
          deaugmented_output = dict(
              (key, self.deaugment_fn[key](outputs[key]))
              for key in self.deaugment_fn.keys()
          )
      elif isinstance(self.deaugment_fn, (list, tuple)):
          if not isinstance(outputs, (dict, tuple)):
              raise ValueError("Output of the model must be a dict")
  
          deaugmented_output = [
              deaugment(value)
              for value, deaugment in zip(outputs, self.deaugment_fn)
          ]
      else:
          deaugmented_output = self.deaugment_fn(outputs)
  
      return deaugmented_output
  
imports: from collections import defaultdict
  from functools import partial
  from typing import Tuple, List, Optional, Union, Callable, Dict, Mapping
  import torch
  from torch import Tensor, nn
  from .None import functional
  from ..utils.support import pytorch_toolbelt_deprecated
label_desc: Use image node_id 2 for calling the GeneralizedTTA obj's underlying member method code with example usage: obj.forward() and returns: deaugmented_output