Exemple #1
0
 def test_multivariate_normal_prior_to_gpu(self):
     if torch.cuda.is_available():
         prior = MultivariateNormalPrior(torch.tensor([0.0, 1.0]), covariance_matrix=torch.eye(2)).cuda()
         self.assertEqual(prior.loc.device.type, "cuda")
         self.assertEqual(prior.covariance_matrix.device.type, "cuda")
         self.assertEqual(prior.scale_tril.device.type, "cuda")
         self.assertEqual(prior.precision_matrix.device.type, "cuda")
 def test_multivariate_normal_prior_validate_args(self):
     with self.assertRaises(ValueError):
         mean = torch.tensor([0.0, 1.0])
         cov = torch.tensor([[1.0, 2.0], [2.0, 0.5]])
         MultivariateNormalPrior(mean,
                                 covariance_matrix=cov,
                                 validate_args=True)
 def test_multivariate_normal_prior_validate_args(self):
     # This should be a ValueError in pytorch, see pytorch Github issue #11997
     with self.assertRaises(ValueError):
         mean = torch.tensor([0.0, 1.0])
         cov = torch.tensor([[1.0, 2.0], [2.0, 0.5]])
         MultivariateNormalPrior(mean,
                                 covariance_matrix=cov,
                                 validate_args=True)
    def test_multivariate_normal_prior_log_prob(self, cuda=False):
        device = torch.device("cuda") if cuda else torch.device("cpu")
        mean = torch.tensor([0.0, 1.0], device=device)
        cov = torch.eye(2, device=device)
        prior = MultivariateNormalPrior(mean, covariance_matrix=cov)
        dist = MultivariateNormal(mean, covariance_matrix=cov)

        t = torch.tensor([-1, 0.5], device=device)
        self.assertTrue(torch.equal(prior.log_prob(t), dist.log_prob(t)))
        t = torch.tensor([[-1, 0.5], [1.5, -2.0]], device=device)
        self.assertTrue(torch.equal(prior.log_prob(t), dist.log_prob(t)))
        with self.assertRaises(RuntimeError):
            prior.log_prob(torch.zeros(3, device=device))