Ejemplo n.º 1
0
    def test_log_det_only(self):
        # Forward pass
        with gpytorch.settings.num_trace_samples(1000):
            res = NonLazyTensor(self.mat).log_det()
        actual = self.mat_clone.logdet()
        self.assertAlmostEqual(res.item(), actual.item(), places=1)

        # Backward
        actual.backward()
        res.backward()
        self.assertLess(
            torch.max((self.mat_clone.grad - self.mat.grad).abs()).item(),
            1e-1)
Ejemplo n.º 2
0
    def test_log_det_only(self):
        # Forward pass
        with gpytorch.settings.num_trace_samples(1000):
            res = NonLazyTensor(self.mat_var).log_det()
        actual = self.mat_var_clone.det().log()
        self.assertAlmostEqual(res.item(), actual.item(), places=1)

        # Backward
        actual.backward()
        res.backward()
        self.assertTrue(
            approx_equal(self.mat_var_clone.grad,
                         self.mat_var.grad,
                         epsilon=1e-1))
Ejemplo n.º 3
0
    def test_inv_quad_only_vector(self):
        # Forward pass
        res = NonLazyTensor(self.mat_var).inv_quad(self.vec_var)
        actual = self.mat_var_clone.inverse().matmul(self.vec_var_clone).mul(
            self.vec_var_clone).sum()
        self.assertAlmostEqual(res.item(), actual.item(), places=1)

        # Backward
        actual.backward()
        res.backward()

        self.assertTrue(
            approx_equal(self.mat_var_clone.grad,
                         self.mat_var.grad,
                         epsilon=1e-1))
        self.assertTrue(
            approx_equal(self.vec_var_clone.grad, self.vec_var.grad))
Ejemplo n.º 4
0
    def test_inv_quad_only_vector(self):
        # Forward pass
        res = NonLazyTensor(self.mat).inv_quad(self.vec)
        actual = self.mat_clone.inverse().matmul(self.vec_clone).mul(
            self.vec_clone).sum()
        self.assertAlmostEqual(res.item(), actual.item(), places=1)

        # Backward
        actual.backward()
        res.backward()

        self.assertLess(
            torch.max((self.mat_clone.grad - self.mat.grad).abs()).item(),
            1e-3)
        self.assertLess(
            torch.max((self.vec_clone.grad - self.vec.grad).abs()).item(),
            1e-3)