class_docstr: Base class of differentiable augmentation operations.
  
  Args:
      operation: Kornia augmentation module.
      initial_magnitude: targeted magnitude parameter name and its initial magnitude value.
          The magnitude parameter name shall align with the attribute inside the random_generator
          in each augmentation. If None, the augmentation will be randomly applied according to
          the augmentation sampling range.
      temperature: temperature for RelaxedBernoulli distribution used during training.
      is_batch_operation: determine if to obtain the probability from `p` or `p_batch`.
          Set to True for most non-shape-persistent operations (e.g. cropping).
class_docstr_tok: ["Base","class","of","differentiable","augmentation","operations",".","Args",":","operation",":","Kornia","augmentation","module",".","initial_magnitude",":","targeted","magnitude","parameter","name","and","its","initial","magnitude","value",".","The","magnitude","parameter","name","shall","align","with","the","attribute","inside","the","random_generator","in","each","augmentation",".","If","None",",","the","augmentation","will","be","randomly","applied","according","to","the","augmentation","sampling","range",".","temperature",":","temperature","for","RelaxedBernoulli","distribution","used","during","training",".","is_batch_operation",":","determine","if","to","obtain","the","probability","from","`","p","`","or","`","p_batch","`",".","Set","to","True","for","most","non-shape-persistent","operations","(","e.g",".","cropping",")","."]
code: def _init_magnitude(
      self,
      initial_magnitude: Optional[List[Tuple[str, Optional[float]]]],
  ) -> None:
      if isinstance(initial_magnitude, (list, tuple)):
          if not all(
              isinstance(ini_mag, (list, tuple)) and len(ini_mag) == 2
              for ini_mag in initial_magnitude
          ):
              raise ValueError(
                  f"`initial_magnitude` shall be a list of 2-element tuples. Got {initial_magnitude}"
              )
          if len(initial_magnitude) != 1:
              raise NotImplementedError(
                  "Multi magnitudes operations are not yet supported."
              )
  
      if initial_magnitude is None:
          self._factor_name = None
          self._magnitude = None
          self.magnitude_range = None
      else:
          self._factor_name = initial_magnitude[0][0]
          if self.op._param_generator is not None:
              self.magnitude_range = getattr(
                  self.op._param_generator, self._factor_name
              )
          else:
              raise ValueError(
                  f"No valid magnitude `{self._factor_name}` found in `{self.op._param_generator}`."
              )
  
          self._magnitude = None
          if initial_magnitude[0][1] is not None:
              self._magnitude = nn.Parameter(
                  torch.empty(1).fill_(initial_magnitude[0][1])
              )
  
imports: from typing import Callable, Dict, List, Optional, Tuple, Type, TypeVar
  import torch
  from torch import nn
  from torch.autograd import Function
  from torch.distributions import Bernoulli, RelaxedBernoulli
  from kornia.augmentation.base import _AugmentationBase
  from kornia.core import Module, Tensor
label_desc: Use image node_id 3 for calling the OperationBase obj's underlying member method code with example usage: obj._init_magnitude(initial_magnitude) without return types