class TestStd(unittest.TestCase): def setUp(self): self._metric = Metric('test') self._metric.process = Mock() self._metric.process.side_effect = [torch.zeros(torch.Size([])), torch.FloatTensor([0.1, 0.2, 0.3]), torch.FloatTensor([0.4, 0.5, 0.6]), torch.FloatTensor([0.7, 0.8, 0.9]), torch.ones(torch.Size([]))] self._std = Std('test') self._std.reset({}) self._target = 0.31622776601684 def test_train(self): self._std.train() for i in range(5): self._std.process(self._metric.process()) result = self._std.process_final({}) self.assertAlmostEqual(self._target, result) def test_validate(self): self._std.eval() for i in range(5): self._std.process(self._metric.process()) result = self._std.process_final({}) self.assertAlmostEqual(self._target, result)
class TestStd(unittest.TestCase): def setUp(self): self._metric = Metric('test') self._metric.process = Mock() self._metric.process.side_effect = [torch.zeros(torch.Size([])), torch.FloatTensor([0.1, 0.2, 0.3]), torch.FloatTensor([0.4, 0.5, 0.6]), torch.FloatTensor([0.7, 0.8, 0.9]), torch.ones(torch.Size([]))] self._std = Std('test') self._std.reset({}) self._target = 0.31622776601684 def test_train(self): self.setUp() self._std.train() for i in range(5): self._std.process(self._metric.process()) result = self._std.process_final({}) self.assertAlmostEqual(self._target, result, places=5) def test_validate(self): self.setUp() self._std.eval() for i in range(5): self._std.process(self._metric.process()) result = self._std.process_final({}) self.assertAlmostEqual(self._target, result, places=5) def test_precision_error(self): self.setUp() self._std.train() val = torch.tensor([0.55]) for i in range(2): self._std.process(val) result = self._std.process_final({}) self.assertEqual(0, result) def setUpMoreDims(self): self._metric = Metric('test') self._metric.process = Mock() self._metric.process.side_effect = [torch.zeros(torch.Size([])), torch.FloatTensor([[0.1, 0.2, 0.3], [1.1, 1.2, 1.3]]), torch.FloatTensor([[0.4, 0.5, 0.6], [1.4, 1.5, 1.6]]), torch.FloatTensor([[0.7, 0.8, 0.9], [1.7, 1.8, 1.9]]), torch.ones(torch.Size([]))] self._std = Std('test') self._std.reset({}) self._target = 0.57662804083742 def test_more_dims(self): self.setUpMoreDims() for i in range(5): self._std.process(self._metric.process()) result = self._std.process_final({}) self.assertAlmostEqual(self._target, result, places=5)
def test_std_dim(self): std = Std('test', dim=0) std.process(torch.Tensor([[1., 2.], [3., 4.]])) std.process(torch.Tensor([[4., 3.], [2., 1.]])) std.process(torch.Tensor([[1., 1.], [1., 1.]])) res = std.process_final() self.assertTrue(len(res) == 2) for m in res: self.assertTrue(abs(m - 1.2649) < 0.0001)