def testInplace(self): t = TensorBase(np.array([2, 4, 8])) t /= np.array([2, 2, 2]) self.assertTrue(syft.equal(t.data, [1, 2, 4])) t = TensorBase(np.array([1, 7, 11])) t /= np.array([3, 2, 9]) self.assertTrue(syft.equal(t, [1 / 3, 7 / 2, 11 / 9]))
def test_axis(self): t = TensorBase( np.array([[0.77937768, 0.51022484, 0.49155195, 0.02769902], [0.03777148, 0.13020167, 0.02155692, 0.69574893]])) result = t.max(axis=1) self.assertTrue(syft.equal(result, [0.77937768, 0.69574893])) result = t.max(axis=0) self.assertTrue( syft.equal(result, [0.77937768, 0.51022484, 0.49155195, 0.69574893]))
def test_split(self): t = TensorBase(np.random.rand(7, 4)) split_size = 3 axis = 0 target_shapes = [(3, 4), (3, 4), (1, 4)] splits = syft.math.split(t, split_size, axis) start = 0 for target_shape, split in zip(target_shapes, splits): self.assertTrue(syft.equal(split.shape(), target_shape)) self.assertTrue( syft.equal(t.narrow(axis, start, target_shape[axis]), split)) start += target_shape[axis]
def test_sin(self): # int t1 = TensorBase(np.array([[3, 1, 2], [0, -1, 2]])) t2 = syft.math.sin(t1) self.assertTrue(syft.equal(t1.data, np.array([[3, 1, 2], [0, -1, 2]]))) self.assertTrue( syft.equal(t2.data, np.sin(np.array([[3, 1, 2], [0, -1, 2]])))) # float t1 = TensorBase(np.array([[3.3, 1.3, 2.2], [0.0, -1.3, 2.4]])) t2 = syft.math.sin(t1) self.assertTrue( syft.equal(t1.data, np.array([[3.3, 1.3, 2.2], [0.0, -1.3, 2.4]]))) self.assertTrue( syft.equal(t2.data, np.sin(np.array([[3.3, 1.3, 2.2], [0.0, -1.3, 2.4]]))))
def test_one_dim_tensor_below_diag(self): t = TensorBase(np.array([1, 2, 3, 4])) self.assertTrue(syft.equal(syft.diag(t, -1), TensorBase([[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 2, 0, 0, 0], [0, 0, 3, 0, 0], [0, 0, 0, 4, 0]])))
def test_matmul_2d_float(self): t1 = TensorBase(np.array([[1.3, 2.5], [3.4, 4.5]])) t2 = TensorBase(np.array([[5.8, 6.5], [7.8, 8.9]])) self.assertTrue(syft.equal(syft.matmul(t1, t2), [[27.04, 30.7], [54.82, 62.15]]))
def test_matmul_2d_int(self): t1 = TensorBase(np.array([[1, 2], [3, 4]])) t2 = TensorBase(np.array([[5, 6], [7, 8]])) self.assertTrue(syft.equal(syft.matmul(t1, t2), [[19, 22], [43, 50]]))
def test_matmul_2d_identity(self): t1 = TensorBase(np.array([[1, 0], [0, 1]])) t2 = TensorBase(np.array([[5.8, 6.5], [7.8, 8.9]])) self.assertTrue(syft.equal(syft.matmul(t1, t2), [[5.8, 6.5], [7.8, 8.9]]))
def test_as_view(self): t = TensorBase(np.array([1.0, 2.0, 3.0])) t1 = t.view([-1, 1]) print(t.data.dtype) self.assertTrue( syft.equal(t.view_as(t1), TensorBase(np.array([[1.0], [2.0], [3.0]]))))
def test_one_dim_tensor_below_diag(self): t = TensorBase(np.array([1, 2, 3])) tdiag = t.diag(-1) self.assertTrue(syft.equal(tdiag.data, TensorBase(np.array([[0, 0, 0, 0], [1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0]]))))
def testScalar(self): t = TensorBase(np.array([1, 2, 3])) self.assertTrue(syft.equal(t + 2, [3, 4, 5]))
def testNotEqual(self): t1 = TensorBase(np.array([1, 2, 3])) t2 = TensorBase(np.array([1, 4, 3])) self.assertFalse(syft.equal(t1, t2))
def testSigmoid(self): t1 = TensorBase(np.array([1.2, 3.3, 4])) self.assertTrue(syft.equal(t1.sigmoid_(), TensorBase( [0.76852478, 0.96442881, 0.98201379])))
def testDimIsNotNoneInt(self): t = TensorBase(np.array([[0, 1], [0, 5]])) self.assertTrue(syft.equal(t.sum(dim=1), [1, 5]))
def testEqual(self): t1 = TensorBase(np.array([1.2, 2, 3])) t2 = TensorBase(np.array([1.2, 2, 3])) self.assertTrue(syft.equal(t1, t2))
def test_floor(self): t1 = TensorBase(np.array([[2.3, 4.1], [7.4, 8.3]])) self.assertTrue(syft.equal(syft.math.floor(t1), TensorBase([[2., 4.], [7., 8.]])))
def testDimNoneInt(self): t = TensorBase(np.array([1, 2, 3])) self.assertTrue(syft.equal(t.sum(), 6))
def testInplace(self): t = TensorBase(np.array([1, 2, 3])) t -= np.array([1, 2, 3]) self.assertTrue(syft.equal(t.data, [0, 0, 0]))
def testFloor_(self): t = TensorBase(np.array([1.4, 2.7, 6.2])) self.assertTrue(syft.equal(t.floor_(), [1., 2., 6.])) self.assertTrue(syft.equal(t.data, [1., 2., 6.]))
def testZero(self): t = TensorBase(np.array([13, 42, 1024])) self.assertTrue(syft.equal(t.zero_(), [0, 0, 0])) t = TensorBase(np.array([13.1, 42.2, 1024.4])) self.assertTrue(syft.equal(t.zero_(), [0.0, 0.0, 0.0]))
def testCeil(self): t = TensorBase(np.array([1.4, 2.7, 6.2])) tdash = t.ceil() self.assertTrue(syft.equal(tdash.data, TensorBase([2, 3, 7]))) self.assertTrue(syft.equal(t.data, TensorBase([1.4, 2.7, 6.2])))
def testSimple(self): t = TensorBase(np.array([2, 4, 8])) self.assertTrue(syft.equal(t / np.array([2, 2, 2]), [1, 2, 4]))
def testCeil_(self): t = TensorBase(np.array([1.4, 2.7, 6.2])) self.assertTrue(syft.equal(t.ceil_(), [2, 3, 7])) self.assertTrue(syft.equal(t.data, [2, 3, 7]))
def testView(self): t = TensorBase([1.0, 2.0, 3.0]) self.assertTrue(syft.equal(t.view(-1, 1), TensorBase(np.array([[1], [2], [3]]))))
def testNe_(self): t1 = TensorBase([1, 2, 3, 4]) t2 = TensorBase([1., 2., 3., 5.]) t1.ne_(t2) self.assertTrue(syft.equal(t1, TensorBase([1, 1, 1, 0])))
def testScalar(self): t = TensorBase(np.array([2, 4, 6])) self.assertTrue(syft.equal(t / 2, [1, 2, 3]))
def testSimple(self): t = TensorBase(np.array([1, 2, 3])) self.assertTrue(syft.equal(t - np.array([1, 2, 3]), [0, 0, 0]))
def testShape(self): t = TensorBase(np.array([[0, 1], [0, 5]])) self.assertTrue(syft.equal(t.shape(), (2, 2)))
def testScalar(self): t = TensorBase(np.array([1, 2, 3])) self.assertTrue(syft.equal(t - 1, [0, 1, 2]))
def testSqrt_(self): t = TensorBase(np.array([[0, 4], [9, 16]])) t.sqrt_() self.assertTrue(syft.equal(t, ([[0, 2], [3, 4]])))