class_docstr: _BasicAugmentationBase base class for customized augmentation implementations.
  
  Plain augmentation base class without the functionality of transformation matrix calculations.
  By default, the random computations will be happened on CPU with ``torch.get_default_dtype()``.
  To change this behaviour, please use ``set_rng_device_and_dtype``.
  
  For automatically generating the corresponding ``__repr__`` with full customized parameters, you may need to
  implement ``_param_generator`` by inheriting ``RandomGeneratorBase`` for generating random parameters and
  put all static parameters inside ``self.flags``. You may take the advantage of ``PlainUniformGenerator`` to
  generate simple uniform parameters with less boilerplate code.
  
  Args:
      p: probability for applying an augmentation. This param controls the augmentation probabilities element-wise.
      p_batch: probability for applying an augmentation to a batch. This param controls the augmentation
        probabilities batch-wise.
      same_on_batch: apply the same transformation across the batch.
      keepdim: whether to keep the output shape the same as input ``True`` or broadcast it to
        the batch form ``False``.
class_docstr_tok: ["_BasicAugmentationBase","base","class","for","customized","augmentation","implementations",".","Plain","augmentation","base","class","without","the","functionality","of","transformation","matrix","calculations",".","By","default",",","the","random","computations","will","be","happened","on","CPU","with","``","torch.get_default_dtype","(",")","``",".","To","change","this","behaviour",",","please","use","``","set_rng_device_and_dtype","``",".","For","automatically","generating","the","corresponding","``","__repr__","``","with","full","customized","parameters",",","you","may","need","to","implement","``","_param_generator","``","by","inheriting","``","RandomGeneratorBase","``","for","generating","random","parameters","and","put","all","static","parameters","inside","``","self.flags","``",".","You","may","take","the","advantage","of","``","PlainUniformGenerator","``","to","generate","simple","uniform","parameters","with","less","boilerplate","code",".","Args",":","p",":","probability","for","applying","an","augmentation",".","This","param","controls","the","augmentation","probabilities","element-wise",".","p_batch",":","probability","for","applying","an","augmentation","to","a","batch",".","This","param","controls","the","augmentation","probabilities","batch-wise",".","same_on_batch",":","apply","the","same","transformation","across","the","batch",".","keepdim",":","whether","to","keep","the","output","shape","the","same","as","input","``","True","``","or","broadcast","it","to","the","batch","form","``","False","``","."]
code: def apply_func(
      self,
      input: Tensor,
      params: Dict[str, Tensor],
      flags: Dict[str, Any],
  ) -> Tensor:
      return self.apply_transform(input, params, flags)
  
imports: from enum import Enum
  from typing import Any, Callable, Dict, Optional, Tuple, Union
  import torch
  from torch.distributions import Bernoulli, Distribution, RelaxedBernoulli
  from kornia.augmentation.random_generator import RandomGeneratorBase
  from kornia.augmentation.utils import _adapted_rsampling, _adapted_sampling, _transform_output_shape, override_parameters
  from kornia.core import Module, Tensor, tensor, zeros
  from kornia.geometry.boxes import Boxes
  from kornia.geometry.keypoints import Keypoints
  from kornia.utils import is_autocast_enabled
label_desc: Use image node_id 12 for calling the _BasicAugmentationBase obj's underlying member method code with example usage: obj.apply_func(input, params, flags) and returns: self