code: def _accumulate_sufficient_statistics(
      self, stats, X, lattice, post_comp, fwdlattice, bwdlattice
  ):
      super()._accumulate_sufficient_statistics(
          stats, X, lattice, post_comp, fwdlattice, bwdlattice
      )
  
      n_samples, _ = X.shape
  
      # Statistics shapes:
      # post_comp_mix     (n_samples, n_components, n_mix)
      # samples           (n_samples, n_features)
      # centered          (n_samples, n_components, n_mix, n_features)
  
      post_mix = np.zeros((n_samples, self.n_components, self.n_mix))
      for p in range(self.n_components):
          log_denses = self._compute_log_weighted_gaussian_densities(
              X, p
          )
          log_normalize(log_denses, axis=-1)
          with np.errstate(under="ignore"):
              post_mix[:, p, :] = np.exp(log_denses)
  
      with np.errstate(under="ignore"):
          post_comp_mix = post_comp[:, :, None] * post_mix
  
      stats["post_mix_sum"] += post_comp_mix.sum(axis=0)
      stats["post_sum"] += post_comp.sum(axis=0)
  
      if "m" in self.params:  # means stats
          stats["m_n"] += np.einsum("ijk,il->jkl", post_comp_mix, X)
  
      if "c" in self.params:  # covariance stats
          centered = X[:, None, None, :] - self.means_
  
          def outer_f(x):  # Outer product over features.
              return x[..., :, None] * x[..., None, :]
  
          if self.covariance_type == "full":
              centered_dots = outer_f(centered)
              c_n = np.einsum(
                  "ijk,ijklm->jklm", post_comp_mix, centered_dots
              )
          elif self.covariance_type == "diag":
              centered2 = np.square(centered, out=centered)  # reuse
              c_n = np.einsum("ijk,ijkl->jkl", post_comp_mix, centered2)
          elif self.covariance_type == "spherical":
              # Faster than (x**2).sum(-1).
              centered_norm2 = np.einsum(
                  "...i,...i", centered, centered
              )
              c_n = np.einsum(
                  "ijk,ijk->jk", post_comp_mix, centered_norm2
              )
          elif self.covariance_type == "tied":
              centered_dots = outer_f(centered)
              c_n = np.einsum(
                  "ijk,ijklm->jlm", post_comp_mix, centered_dots
              )
  
          stats["c_n"] += c_n
  
imports: import functools
  import inspect
  import warnings
  import numpy
  from scipy import special
  from scipy.stats import multinomial, poisson
  from sklearn.utils import check_random_state
  from .base import BaseHMM, _AbstractHMM
  from .stats import log_multivariate_normal_density
  from .utils import fill_covars, log_normalize
label_desc: Use image node_id 5 for calling the BaseGMMHMM obj's underlying member method code with example usage: obj._accumulate_sufficient_statistics(stats, X, lattice, post_comp, fwdlattice, bwdlattice) and returns: unknown