code: def test_reset_cache(X):
      d1, d2 = Exponential([1]), Gamma([1], [2])
      d = IndependentComponents([d1, d2])
      d1._w_sum[0] = 5
      d1._xw_sum[0] = 21
      d2._w_sum[0] = 1
      d2._xw_sum[0] = 8
  
      assert_array_almost_equal(d1._w_sum, [5])
      assert_array_almost_equal(d1._xw_sum, [21])
      assert_array_almost_equal(d2._w_sum, [1])
      assert_array_almost_equal(d2._xw_sum, [8])
  
      d._reset_cache()
      assert_array_almost_equal(d1._w_sum, [0])
      assert_array_almost_equal(d1._xw_sum, [0])
      assert_array_almost_equal(d2._w_sum, [0])
      assert_array_almost_equal(d2._xw_sum, [0])
  
imports: import os
  import numpy
  import torch
  import pytest
  from pomegranate.distributions import Exponential
  from pomegranate.distributions import Gamma
  from pomegranate.distributions import Categorical
  from pomegranate.distributions import IndependentComponents
  from ._utils import _test_initialization_raises_one_parameter
  from ._utils import _test_initialization
  from ._utils import _test_predictions
  from ._utils import _test_efd_from_summaries
  from ._utils import _test_raises
  from nose.tools import assert_raises
  from numpy.testing import assert_array_almost_equal
label_desc: Use image node_id 8 for calling a global function with example usage: test_reset_cache(X) without return types