class_docstr: GeometricAugmentationBase2D base class for customized geometric augmentation implementations.
  
  Args:
      p: probability for applying an augmentation. This param controls the augmentation probabilities
        element-wise for a batch.
      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: ["GeometricAugmentationBase2D","base","class","for","customized","geometric","augmentation","implementations",".","Args",":","p",":","probability","for","applying","an","augmentation",".","This","param","controls","the","augmentation","probabilities","element-wise","for","a","batch",".","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","``","."]
docstr: Inverse the transformation on keypoints.
  
  Args:
      input: input keypoints tensor or object.
      params: the corresponding parameters for an operation.
      flags: static parameters.
      transform: the inverse transformation matrix
docstr_tok: ["Inverse","the","transformation","on","keypoints",".","Args",":","input",":","input","keypoints","tensor","or","object",".","params",":","the","corresponding","parameters","for","an","operation",".","flags",":","static","parameters",".","transform",":","the","inverse","transformation","matrix"]
code: def inverse_keypoints(
      self,
      input: Keypoints,
      params: Dict[str, Tensor],
      flags: Dict[str, Any],
      transform: Optional[Tensor] = None,
      **kwargs: Any,
  ) -> Keypoints:
      """Inverse the transformation on keypoints.
  
      Args:
          input: input keypoints tensor or object.
          params: the corresponding parameters for an operation.
          flags: static parameters.
          transform: the inverse transformation matrix
      """
      output = input.clone()
      batch_prob = params["batch_prob"]
      to_apply = (
          batch_prob > 0.5
      )  # NOTE: in case of Relaxed Distributions.
  
      if transform is None:
          raise RuntimeError(
              "`transform` has to be a tensor. Got None."
          )
  
      params, flags = self._process_kwargs_to_params_and_flags(
          self._params if params is None else params, flags, **kwargs
      )
  
      # if no augmentation needed
      if not to_apply.any():
          output = input
      # if all data needs to be augmented
      elif to_apply.all():
          output = input.transform_keypoints_(transform)
      else:
          output[to_apply] = input[to_apply].transform_keypoints_(
              transform[to_apply]
          )
  
      return output
  
imports: from typing import Any, Dict, Optional, Tuple
  from kornia.augmentation._2d.base import RigidAffineAugmentationBase2D
  from kornia.constants import Resample
  from kornia.core import Tensor, as_tensor
  from kornia.geometry.boxes import Boxes
  from kornia.geometry.keypoints import Keypoints
  from kornia.utils.helpers import _torch_inverse_cast
label_desc: Use image node_id 15 for calling the GeometricAugmentationBase2D obj's underlying member method code with example usage: obj.inverse_keypoints(input, params, flags, transform) and returns: output