class_docstr: Class for Riemannian and pseudo-Riemannian metrics.
  
  The associated Levi-Civita connection on the tangent bundle.
class_docstr_tok: ["Class","for","Riemannian","and","pseudo-Riemannian","metrics",".","The","associated","Levi-Civita","connection","on","the","tangent","bundle","."]
docstr: Inner product between two tangent vectors at a base point.
  
  Parameters
  ----------
  tangent_vec_a: array-like, shape=[..., dim]
      Tangent vector at base point.
  tangent_vec_b: array-like, shape=[..., dim]
      Tangent vector at base point.
  base_point: array-like, shape=[..., dim]
      Base point.
      Optional, default: None.
  
  Returns
  -------
  inner_product : array-like, shape=[...,]
      Inner-product.
docstr_tok: ["Inner","product","between","two","tangent","vectors","at","a","base","point",".","Parameters","--","--","--","--","--","tangent_vec_a",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","base","point",".","tangent_vec_b",":","array-like",",","shape=","[","...",",","dim","]","Tangent","vector","at","base","point",".","base_point",":","array-like",",","shape=","[","...",",","dim","]","Base","point",".","Optional",",","default",":","None",".","Returns","--","--","--","-","inner_product",":","array-like",",","shape=","[","...",",","]","Inner-product","."]
code: def inner_product(self, tangent_vec_a, tangent_vec_b, base_point):
      """Inner product between two tangent vectors at a base point.
  
      Parameters
      ----------
      tangent_vec_a: array-like, shape=[..., dim]
          Tangent vector at base point.
      tangent_vec_b: array-like, shape=[..., dim]
          Tangent vector at base point.
      base_point: array-like, shape=[..., dim]
          Base point.
          Optional, default: None.
  
      Returns
      -------
      inner_product : array-like, shape=[...,]
          Inner-product.
      """
      inner_prod_mat = self.metric_matrix(base_point)
      aux = gs.einsum("...j,...jk->...k", tangent_vec_a, inner_prod_mat)
      return gs.dot(aux, tangent_vec_b)
  
imports: from abc import ABC
  import joblib
  import geomstats.backend
  import geomstats.geometry
  from geomstats.geometry.connection import Connection
  from geomstats.vectorization import check_is_batch
label_desc: Use image node_id 8 for calling the RiemannianMetric obj's underlying member method code with example usage: obj.inner_product(tangent_vec_a, tangent_vec_b, base_point) and returns: gs