class_docstr: 3D Keypoints containing Nx3 or BxNx3 points.
  
  Args:
      keypoints: Raw tensor or a list of Tensors with the Nx3 coordinates
      raise_if_not_floating_point: will raise if the Tensor isn't float
docstr: Apply a transformation matrix to the 2D keypoints.
  
  Args:
      M: The transformation matrix to be applied, shape of :math:`(3, 3)` or :math:`(B, 3, 3)`.
      inplace: do transform in-place and return self.
  
  Returns:
      The transformed keypoints.
docstr_tok: ["Apply","a","transformation","matrix","to","the","2D","keypoints",".","Args",":","M",":","The","transformation","matrix","to","be","applied",",","shape","of",":","math",":","`","(","3",",","3",")","`","or",":","math",":","`","(","B",",","3",",","3",")","`",".","inplace",":","do","transform","in-place","and","return","self",".","Returns",":","The","transformed","keypoints","."]
code: def transform_keypoints(
      self, M: Tensor, inplace: bool = False
  ) -> "Keypoints3D":
      r"""Apply a transformation matrix to the 2D keypoints.
  
      Args:
          M: The transformation matrix to be applied, shape of :math:`(3, 3)` or :math:`(B, 3, 3)`.
          inplace: do transform in-place and return self.
  
      Returns:
          The transformed keypoints.
      """
      raise NotImplementedError
  
imports: from typing import List, Optional, Tuple, Union, cast
  import torch
  from torch import Size
  from kornia.core import Tensor
  from kornia.geometry import transform_points
label_desc: Use image node_id 8 for calling the Keypoints3D obj's underlying member method code with example usage: obj.transform_keypoints(M, inplace) without return types