Esempio n. 1
0
    def test_ModelTest_CheckSaveLoad_Insufficient(self):
        shape = Shape([2, 2])
        values1 = [1, 2, 3, 4]
        values2 = [5, 6, 7, 8]
        tmp = tempfile.NamedTemporaryFile()

        m1 = Model()
        m2 = Model()
        p1 = Parameter(shape, I.Constant(0))
        p1.value += tF.raw_input(shape, values1)
        p2 = Parameter(shape, I.Constant(0))
        p2.value += tF.raw_input(shape, values2)
        m1.add("p", p1)
        m2.add("p", p2)
        m1.add("sm", m2)

        m1.save(tmp.name)

        m1 = Model()
        m2 = Model()
        p1 = Parameter()
        m1.add("p", p1)
        m1.add("sm", m2)

        with self.assertRaises(RuntimeError):
            m1.load(tmp.name)
Esempio n. 2
0
    def test_ModelTest_CheckSaveLoad_Same(self):
        shape = Shape([2, 2])
        values1 = [1, 2, 3, 4]
        values2 = [5, 6, 7, 8]
        tmp = tempfile.NamedTemporaryFile()

        m1 = Model()
        m2 = Model()
        p1 = Parameter(shape, I.Constant(0))
        p1.value += tF.raw_input(shape, values1)
        p2 = Parameter(shape, I.Constant(0))
        p2.value += tF.raw_input(shape, values2)
        m1.add("p", p1)
        m2.add("p", p2)
        m1.add("sm", m2)

        m1.save(tmp.name)

        m1 = Model()
        m2 = Model()
        p1 = Parameter()
        p2 = Parameter()
        m1.add("p", p1)
        m2.add("p", p2)
        m1.add("sm", m2)

        m1.load(tmp.name)

        self.assertTrue(p1.valid())
        self.assertTrue(p2.valid())
        self.assertEqual(shape, p1.shape())
        self.assertEqual(shape, p2.shape())
        self.assertEqual(values1, p1.value.to_list())
        self.assertEqual(values2, p2.value.to_list())
Esempio n. 3
0
 def test_TensorTest_CheckInplaceSubtractN1(self):
     for dev in TensorTest.devices:
         a_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
         b_data = [0, 1, 2, 3]
         y_data = [1, 1, 1, 1, 5, 5, 5, 5, 9, 9, 9, 9]
         a = tF.raw_input(Shape([2, 2], 3), a_data, dev)
         b = tF.raw_input([2, 2], b_data, dev)
         a -= b
         self.assertEqual(y_data, a.to_list())
Esempio n. 4
0
 def test_TensorTest_CheckInplaceAdd1N(self):
     for dev in TensorTest.devices:
         a_data = [1, 2, 3, 4]
         b_data = [0, -1, -2, -3, -3, -4, -5, -6, -6, -7, -8, -9]
         y_data = [-8, -10, -12, -14]
         a = tF.raw_input([2, 2], a_data, dev)
         b = tF.raw_input(Shape([2, 2], 3), b_data, dev)
         a += b
         self.assertEqual(y_data, a.to_list())
Esempio n. 5
0
 def test_TensorTest_CheckInplaceSubtract1N(self):
     for dev in TensorTest.devices:
         a_data = [1, 2, 3, 4]
         b_data = [0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9]
         y_data = [-8, -10, -12, -14]
         a = tF.raw_input([2, 2], a_data, dev)
         b = tF.raw_input(Shape([2, 2], 3), b_data, dev)
         a -= b
         self.assertEqual(y_data, a.to_list())
Esempio n. 6
0
 def test_TensorTest_InplaceMultiplyConst(self):
     for dev in TensorTest.devices:
         x_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
         y_data = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]
         x = tF.raw_input(Shape([2, 2], 3), x_data, dev)
         x *= 2
         self.assertEqual(y_data, x.to_list())
     for dev in TensorTest.devices:
         x_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
         y_data = [.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6]
         x = tF.raw_input(Shape([2, 2], 3), x_data, dev)
         x *= .5
         self.assertEqual(y_data, x.to_list())
Esempio n. 7
0
    def test_TensorTest_CheckInvalidInplaceOps(self):
        for dev in TensorTest.devices:
            shapes = [
                Shape(),
                Shape([], 3),
                Shape([2, 2], 2),
            ]
            a = tF.raw_input(Shape([2, 2], 3), [0] * 12, dev)

            for shape in shapes:
                b = tF.raw_input(shape, [0] * shape.size(), dev)
                with self.assertRaises(RuntimeError):
                    a += b
                with self.assertRaises(RuntimeError):
                    a -= b
Esempio n. 8
0
    def test_TesnorTest_CheckResetValuesByConstant(self):
        for dev in TensorTest.devices:
            x = tF.raw_input(Shape([2, 2], 2), [42] * 8, dev)
            self.assertEqual([42] * 8, x.to_list())

            x = tF.raw_input(Shape([2, 2], 2), [0] * 8, dev)
            x.reset(42)
            self.assertEqual([42] * 8, x.to_list())

            x = tF.raw_input(Shape([2, 2], 2), [123] * 8, dev)
            copied = Tensor(x)

            x.reset(42)
            self.assertEqual([42] * 8, x.to_list())
            self.assertEqual([123] * 8, copied.to_list())
Esempio n. 9
0
 def test_TensorTest_CheckArgMinLarge(self):
     ns = [
         1,
         2,
         3,
         15,
         16,
         17,
         255,
         256,
         257,
         1023,
         1024,
         1025,
         65535,
         65536,
         65537,
     ]
     for dev in TensorTest.devices:
         for n in ns:
             data = list(range(n))
             random.shuffle(data)
             pos = data.index(0)
             a = tF.raw_input([n], data, dev)
             self.assertEqual(pos, a.argmin(0)[0])
Esempio n. 10
0
 def test_TensorTest_CheckArgMinDims(self):
     data = [
         3,
         4,
         5,
         0,
         1,
         2,
         6,
         7,
         8,
         0,
         -1,
         -2,
         -6,
         -7,
         -8,
         -3,
         -4,
         -5,
     ]
     expected = [
         [0, 0, 0, 2, 2, 2],
         [1, 1, 1, 1, 1, 1],
         [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
     ]
     for dev in TensorTest.devices:
         a = tF.raw_input(Shape([3, 3], 2), data, dev)
         for i, exp in enumerate(expected):
             self.assertEqual(exp, a.argmin(i))
Esempio n. 11
0
    def test_TensorTest_CheckInplaceSubtract(self):
        for dev in TensorTest.devices:
            a_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
            b_data = [0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9]
            y_data = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]
            a = tF.raw_input(Shape([2, 2], 3), a_data, dev)
            b = tF.raw_input(Shape([2, 2], 3), b_data, dev)

            copied = Tensor(a)
            ref_a = a

            a -= b
            self.assertEqual(y_data, a.to_list())

            self.assertEqual(y_data, a.to_list())
            self.assertEqual(a_data, copied.to_list())
            self.assertIs(ref_a, a)
Esempio n. 12
0
    def test_TensorTest_CheckResetValuesByVector(self):
        for dev in TensorTest.devices:
            data = [1, 2, 3, 4, 5, 6, 7, 8]
            x = tF.raw_input(Shape([2, 2], 2), data, dev)
            self.assertEqual(data, x.to_list())

            data = [1, 2, 3, 4, 5, 6, 7, 8]
            x = tF.raw_input(Shape([2, 2], 2), [0] * 8, dev)
            x.reset_by_vector(data)
            self.assertEqual(data, x.to_list())

            data = [1, 2, 3, 4, 5, 6, 7, 8]
            x = tF.raw_input(Shape([2, 2], 2), [123] * 8, dev)
            copied = Tensor(x)

            x.reset_by_vector(data)
            self.assertEqual(data, x.to_list())
            self.assertEqual([123] * 8, copied.to_list())
Esempio n. 13
0
    def test_ModelTest_CheckSaveLoadWithStats(self):
        shape = Shape([2, 2])
        values1 = [1, 2, 3, 4]
        values2 = [5, 6, 7, 8]
        stats1 = [10, 20, 30, 40]
        stats2 = [50, 60, 70, 80]
        tmp = tempfile.NamedTemporaryFile()

        m1 = Model()
        m2 = Model()
        p1 = Parameter(shape, I.Constant(0))
        p1.value += tF.raw_input(shape, values1)
        p2 = Parameter(shape, I.Constant(0))
        p2.value += tF.raw_input(shape, values2)
        p1.add_stats("a", shape)
        p2.add_stats("b", shape)
        p1.stats["a"].reset_by_vector(stats1);
        p2.stats["b"].reset_by_vector(stats2);
        m1.add("p", p1)
        m2.add("p", p2)
        m1.add("sm", m2)

        m1.save(tmp.name)

        m1 = Model()
        m2 = Model()
        p1 = Parameter()
        p2 = Parameter()
        m1.add("p", p1)
        m2.add("p", p2)
        m1.add("sm", m2)

        m1.load(tmp.name)

        self.assertTrue(p1.valid())
        self.assertTrue(p2.valid())
        self.assertEqual(shape, p1.shape())
        self.assertEqual(shape, p2.shape())
        self.assertEqual(values1, p1.value.to_list())
        self.assertEqual(values2, p2.value.to_list())
        self.assertTrue("a" in p1.stats)
        self.assertTrue("b" in p2.stats)
        self.assertEqual(stats1, p1.stats["a"].to_list())
        self.assertEqual(stats2, p2.stats["b"].to_list())
Esempio n. 14
0
 def test_TensorTest_CheckCopyValidToNew(self):
     for dev in TensorTest.devices:
         print(dev)
         tmp = tF.raw_input(Shape([2], 3), [1, 2, 3, 4, 5, 6], dev)
         x = Tensor(tmp)
         self.assertTrue(x.valid())
         self.assertTrue(tmp.valid())
         self.assertEqual(Shape([2], 3), x.shape())
         self.assertEqual(Shape([2], 3), tmp.shape())
         self.assertEqual([1, 2, 3, 4, 5, 6], x.to_list())
         self.assertEqual([1, 2, 3, 4, 5, 6], tmp.to_list())
Esempio n. 15
0
 def test_TensorTest_CheckNewScalarWithData(self):
     for dev in TensorTest.devices:
         x = tF.raw_input([], [1], dev)
         x_ndarray = [
             np.array([1]),
         ]
         self.assertTrue(x.valid())
         self.assertIs(dev, x.device())
         self.assertEqual(Shape(), x.shape())
         self.assertEqual([1], x.to_list())
         self.assertEqual(1.0, x.to_float())
         self.assertEqual(x_ndarray, x.to_ndarrays())
Esempio n. 16
0
 def test_TensorTest_CheckNewMatrixWithData(self):
     for dev in TensorTest.devices:
         data = [1, 2, 3, 4, 5, 6]
         data_ndarray = [
             np.array([[1, 3, 5], [2, 4, 6]]),
         ]
         x = tF.raw_input([2, 3], data, dev)
         self.assertTrue(x.valid())
         self.assertIs(dev, x.device())
         self.assertEqual(Shape([2, 3]), x.shape())
         self.assertEqual(data, x.to_list())
         with self.assertRaises(RuntimeError):
             x.to_float()
         self.assertTrue(np.array_equal(data_ndarray, x.to_ndarrays()))
Esempio n. 17
0
 def test_optimizer_add(self):
     model = TestModel()
     p = Parameter([5], I.Constant(0))
     p.gradient = tF.raw_input([5], [1, 2, 3, 4, 5])
     optimizer = O.Adam()
     optimizer.set_weight_decay(1e-6)
     optimizer.set_gradient_clipping(5)
     optimizer.add(model)
     optimizer.add(p)
     self.assertEqual(p.gradient.to_list(), [1, 2, 3, 4, 5])
     self.assertEqual(model.param.gradient.to_list(), [1, 2, 3, 4, 5])
     optimizer.reset_gradients()
     self.assertEqual(p.gradient.to_list(), [0, 0, 0, 0, 0])
     self.assertEqual(model.param.gradient.to_list(), [0, 0, 0, 0, 0])
Esempio n. 18
0
    def test_device_instance(self):
        tensor = tF.raw_input([], [0])
        dev = tensor.device()
        self.assertIs(dev, self.device)

        node = F.raw_input([], [0])
        dev = node.device()
        self.assertIs(dev, self.device)

        my_device = Naive()
        self.assertIsNot(my_device, self.device)

        node = F.raw_input([], [0], dev=my_device)
        dev = node.device()
        self.assertIs(dev, my_device)

        param = Parameter([], I.Constant(1))
        dev = param.device()
        self.assertIs(dev, self.device)
Esempio n. 19
0
 def test_TensorTest_CheckNewMatrixMinibatchWithData(self):
     for dev in TensorTest.devices:
         data = [
             3,
             1,
             4,
             1,
             5,
             9,
             2,
             6,
             5,
             3,
             5,
             8,
             9,
             7,
             9,
             3,
             2,
             3,
             8,
             4,
             6,
             2,
             6,
             4,
         ]
         data_ndarray = [
             np.array([[3, 4, 5], [1, 1, 9]]),
             np.array([[2, 5, 5], [6, 3, 8]]),
             np.array([[9, 9, 2], [7, 3, 3]]),
             np.array([[8, 6, 6], [4, 2, 4]]),
         ]
         x = tF.raw_input(Shape([2, 3], 4), data, dev)
         self.assertTrue(x.valid())
         self.assertIs(dev, x.device())
         self.assertEqual(Shape([2, 3], 4), x.shape())
         self.assertEqual(data, x.to_list())
         with self.assertRaises(RuntimeError):
             x.to_float()
         self.assertTrue(np.array_equal(data_ndarray, x.to_ndarrays()))
Esempio n. 20
0
 def __init__(self):
     self.param = Parameter([5], I.Constant(0))
     self.param.gradient = tF.raw_input([5], [1, 2, 3, 4, 5])
     self.scan_attributes()