class_docstr: Tangent Principal component analysis (tPCA).
  
  Linear dimensionality reduction using
  Singular Value Decomposition of the
  Riemannian Log of the data at the tangent space
  of the Frechet mean.
  
  Parameters
  ----------
  space : Manifold
      Equipped manifold.
  n_components : int
      Number of principal components.
      Optional, default: None.
  
  Notes
  -----
  * Required geometry methods: `exp`, `log`.
  * If `base_point=None`, also requires `FrechetMean` required methods.
  * Lie groups can be used without a metric, but `base_point` or `mean_estimator`
    need to be specified.
class_docstr_tok: ["Tangent","Principal","component","analysis","(","tPCA",")",".","Linear","dimensionality","reduction","using","Singular","Value","Decomposition","of","the","Riemannian","Log","of","the","data","at","the","tangent","space","of","the","Frechet","mean",".","Parameters","--","--","--","--","--","space",":","Manifold","Equipped","manifold",".","n_components",":","int","Number","of","principal","components",".","Optional",",","default",":","None",".","Notes","--","--","-","*","Required","geometry","methods",":","`","exp","`",",","`","log","`",".","*","If","`","base_point=None","`",",","also","requires","`","FrechetMean","`","required","methods",".","*","Lie","groups","can","be","used","without","a","metric",",","but","`","base_point","`","or","`","mean_estimator","`","need","to","be","specified","."]
docstr: Low-dimensional reconstruction of X.
  
  The reconstruction will match X_original whose transform would be X
  if `n_components=min(n_samples, n_features)`.
  
  Parameters
  ----------
  X : array-like, shape=[..., n_components]
      New data, where n_samples is the number of samples
      and n_components is the number of components.
  
  Returns
  -------
  X_original : array-like, shape=[..., n_features]
      Original data.
docstr_tok: ["Low-dimensional","reconstruction","of","X",".","The","reconstruction","will","match","X_original","whose","transform","would","be","X","if","`","n_components=min","(","n_samples",",","n_features",")","`",".","Parameters","--","--","--","--","--","X",":","array-like",",","shape=","[","...",",","n_components","]","New","data",",","where","n_samples","is","the","number","of","samples","and","n_components","is","the","number","of","components",".","Returns","--","--","--","-","X_original",":","array-like",",","shape=","[","...",",","n_features","]","Original","data","."]
code: def inverse_transform(self, X):
      """Low-dimensional reconstruction of X.
  
      The reconstruction will match X_original whose transform would be X
      if `n_components=min(n_samples, n_features)`.
  
      Parameters
      ----------
      X : array-like, shape=[..., n_components]
          New data, where n_samples is the number of samples
          and n_components is the number of components.
  
      Returns
      -------
      X_original : array-like, shape=[..., n_features]
          Original data.
      """
      scores = self.mean_ + gs.matmul(X, self.components_)
  
      if self.space.point_ndim > 1:
          if gs.all(Matrices.is_square(self.base_point_)) and gs.all(
              Matrices.is_symmetric(self.base_point_)
          ):
              scores = SymmetricMatrices(
                  self.base_point_.shape[-1]
              ).matrix_representation(scores)
          else:
              dim = self.base_point_.shape[-1]
              scores = gs.reshape(scores, (len(scores), dim, dim))
      return self._geometry.exp(scores, self.base_point_)
  
imports: import numbers
  from math import log
  from scipy.special import gammaln
  from sklearn.decomposition._base import _BasePCA
  from sklearn.utils.extmath import stable_cumsum, svd_flip
  import geomstats.backend
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.symmetric_matrices import SymmetricMatrices
  from geomstats.learning.exponential_barycenter import ExponentialBarycenter
  from geomstats.learning.frechet_mean import FrechetMean
label_desc: Use image node_id 6 for calling the TangentPCA obj's underlying member method code with example usage: obj.inverse_transform(X) and returns: self