예제 #1
0
 def test_batch_eval_neg_ackley(self, cuda=False):
     device = torch.device("cuda") if cuda else torch.device("cpu")
     for dtype in (torch.float, torch.double):
         X = torch.zeros(2, DIMENSION, device=device, dtype=dtype)
         res = neg_ackley(X)
         self.assertEqual(res.dtype, dtype)
         self.assertEqual(res.device.type, device.type)
         self.assertEqual(res.shape, torch.Size([2]))
예제 #2
0
 def test_neg_ackley_global_maximum(self, cuda=False):
     device = torch.device("cuda") if cuda else torch.device("cpu")
     for dtype in (torch.float, torch.double):
         X = torch.tensor(
             GLOBAL_MAXIMIZER * DIMENSION,
             device=device,
             dtype=dtype,
             requires_grad=True,
         )
         res = neg_ackley(X)
         self.assertAlmostEqual(res.item(), GLOBAL_MAXIMUM, places=4)
         grad = torch.autograd.grad(res, X)[0]
         self.assertLess(grad.abs().max().item(), 1e-4)