class_docstr: Verification that the implementation of the PCA in VISSL
  works with both tensors and numpy arrays and provide the
  right results
code: def test_pca_fit_torch_tensor(self) -> None:
      X = np.random.normal(loc=0.0, scale=1.0, size=(100, 16))
      X = torch.from_numpy(X)
  
      pca = PCA(n_components=8)
      pca.fit(X)
      Y = pca.transform(X.numpy())
      Z = pca.transform(X)
  
      self.assertIsInstance(Y, np.ndarray)
      self.assertIsInstance(Z, torch.Tensor)
      self.assertEqual((100, 8), Y.shape)
      self.assertEqual(torch.Size([100, 8]), Z.shape)
      self.assertTrue(np.array_equal(Y, Z.numpy()))
  
file_path: vissl/tests/test_pca.py
imports: import unittest
  import numpy
  import torch
  from vissl.utils.pca import PCA
label_desc: Use image node_id 4 for calling the TestDataLimitSubSampling obj's underlying member method code with example usage: obj.test_pca_fit_torch_tensor() without return types