Example #1
0
 def test_properties(self):
     a, b = dragon.Tensor(()), dragon.Tensor(())
     self.assertEqual(dragon.Tensor(()).ndim, 0)
     self.assertEqual(dragon.Tensor(()).size, 1)
     self.assertEqual(dragon.Tensor(shape=(2,)).ndim, 1)
     self.assertEqual(dragon.Tensor(shape=(2,)).shape, (2,))
     self.assertEqual(dragon.Tensor(shape=(2,)).size, 2)
     self.assertEqual(dragon.Tensor(shape=(2,), dtype='float32').dtype, 'float32')
     self.assertEqual(dragon.Tensor(None, symbolic=True).size, 0)
     self.assertEqual(dragon.Tensor((), symbolic=True).size, 1)
     self.assertEqual(dragon.Tensor(None, symbolic=True).shape, None)
     self.assertEqual(dragon.Tensor(shape=(2, None), symbolic=True).size, math.inf)
     self.assertEqual(dragon.Tensor(None, dtype='float32', symbolic=True).dtype, 'float32')
     self.assertEqual(dragon.Tensor(None, None, symbolic=True).dtype, None)
     self.assertNotEqual(a.__hash__(), b.__hash__())
     self.assertEqual(a.__repr__(), b.__repr__())
     self.assertNotEqual(a.__repr__(), dragon.Tensor((), symbolic=True).__repr__())
     self.assertEqual(float(int(a)), float(b))
     self.assertEqual(dragon.constant([2]).item(), 2)
     self.assertEqual(dragon.constant([2, 3]).tolist(), [2, 3])
     try:
         _ = dragon.Tensor(None)
     except ValueError:
         pass
     b.requires_grad = True
     self.assertEqual(b.requires_grad, True)
Example #2
0
 def test_update_function(self):
     optimizer = dragon.optimizers.SGD(lr=1, momentum=0)
     try:
         _ = optimizer.op_type
     except KeyError:
         pass
     var = dragon.constant(1, dtype='float32')
     grad = dragon.constant(1, dtype='float32')
     with dragon.eager_mode():
         optimizer.apply_gradients([(grad, var)])
     with dragon.graph_mode():
         optimizer.apply_gradients([(grad, var)]).run()
     self.assertEqual(float(var), -1.)
Example #3
0
 def test_register_alias(self):
     w = dragon.Workspace()
     with w.as_default():
         x = dragon.constant(1)
         w.set_alias(x.id, 'test_register_alias/y')
         alias_impl = w.get_tensor('test_register_alias/y')
         self.assertEqual(int(alias_impl.ToNumpy()), 1)
Example #4
0
 def test_merge_form(self):
     w1, w2 = dragon.Workspace(), dragon.Workspace()
     with w1.as_default():
         x = dragon.constant(0)
     w2.merge_from(w1)
     with w2.as_default():
         self.assertEqual(int(x), 0)
Example #5
0
 def test_dlpack_converter(self):
     data = np.array([0., 1., 2.], 'float32')
     with dragon.device('cpu'):
         x = dragon.constant(data, copy=True)
     x_to_dlpack = dragon.dlpack.to_dlpack(x)
     x_from_dlpack = dragon.dlpack.from_dlpack(x_to_dlpack)
     self.assertEqual(x_from_dlpack.shape, data.shape)
     self.assertEqual(x_from_dlpack.dtype, str(data.dtype))
     self.assertLessEqual(np.abs(x_from_dlpack.numpy() - data).max(), 1e-5)