class_docstr: Diffeomorphism through autodiff.
docstr: Tangent diffeomorphism at base point.
  
  Parameters
  ----------
  image_tangent_vec : array-like, shape=[..., *image_shape]
      Tangent vector at base point.
  image_point : array-like, shape=[..., *image_shape]
      Base point.
  base_point : array-like, shape=[..., *space_shape]
      Base point.
  
  Returns
  -------
  tangent_vec : array-like, shape=[..., *space_shape]
      Tangent vector at base point.
docstr_tok: ["Tangent","diffeomorphism","at","base","point",".","Parameters","--","--","--","--","--","image_tangent_vec",":","array-like",",","shape=","[","...",",","*","image_shape","]","Tangent","vector","at","base","point",".","image_point",":","array-like",",","shape=","[","...",",","*","image_shape","]","Base","point",".","base_point",":","array-like",",","shape=","[","...",",","*","space_shape","]","Base","point",".","Returns","--","--","--","-","tangent_vec",":","array-like",",","shape=","[","...",",","*","space_shape","]","Tangent","vector","at","base","point","."]
code: def inverse_tangent_diffeomorphism(
      self, image_tangent_vec, image_point=None, base_point=None
  ):
      r"""Tangent diffeomorphism at base point.
  
      Parameters
      ----------
      image_tangent_vec : array-like, shape=[..., *image_shape]
          Tangent vector at base point.
      image_point : array-like, shape=[..., *image_shape]
          Base point.
      base_point : array-like, shape=[..., *space_shape]
          Base point.
  
      Returns
      -------
      tangent_vec : array-like, shape=[..., *space_shape]
          Tangent vector at base point.
      """
      if image_point is None:
          image_point = self.diffeomorphism(base_point)
  
      batch_shape = get_batch_shape(
          self._image_space_point_ndim, image_tangent_vec, image_point
      )
      flat_batch_shape = (-1,) if batch_shape else ()
  
      j_flat = gs.reshape(
          self.inverse_jacobian_diffeomorphism(image_point),
          flat_batch_shape + (self._shape_prod, self._image_shape_prod),
      )
  
      itv_flat = gs.reshape(
          image_tangent_vec,
          flat_batch_shape + (self._image_shape_prod,),
      )
  
      tv = gs.reshape(
          gs.einsum("...ij,...j->...i", j_flat, itv_flat),
          batch_shape + self._space_shape,
      )
      return tv
  
imports: import abc
  import math
  import geomstats.backend
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 5 for calling the AutodiffDiffeo obj's underlying member method code with example usage: obj.inverse_tangent_diffeomorphism(image_tangent_vec, image_point, base_point) and returns: tv