Esempio n. 1
0
    def test_ModelTest_CheckGetParameterRecursiveByTuple(self):
        m = Model()
        sm = Model()
        p1 = Parameter()
        p2 = Parameter()
        p3 = Parameter()
        m.add("p1", p1)
        sm.add("p2", p2)
        sm.add("p3", p3)
        m.add("sm", sm)

        self.assertIs(p1, m["p1"])
        self.assertIs(p2, m["sm", "p2"])
        self.assertIs(p3, m["sm", "p3"])
        self.assertIs(p2, sm["p2"])
        self.assertIs(p3, sm["p3"])
        with self.assertRaises(TypeError):
            m["p2"]
        with self.assertRaises(TypeError):
            m["p3"]
        m["sm"]
        with self.assertRaises(TypeError):
            m["sm", "p1"]
        with self.assertRaises(TypeError):
            sm["p1"]
        with self.assertRaises(TypeError):
            m["x"]
Esempio n. 2
0
    def test_ModelTest_CheckAddSubmodel(self):
        m = Model()
        sm1 = Model()
        sm2 = Model()
        p1 = Parameter()
        p2 = Parameter()

        m.add("p1", p1)
        m.add("sm1", sm1)
        m.add("sm1", sm1)
        with self.assertRaises(RuntimeError):
            m.add("x", sm1)

        with self.assertRaises(RuntimeError):
            m.add("p1", p2)
        with self.assertRaises(RuntimeError):
            m.add("sm1", p2)
        with self.assertRaises(RuntimeError):
            m.add("p1", sm2)
        with self.assertRaises(RuntimeError):
            m.add("sm1", sm2)

        m.add("p2", p2)
        m.add("sm2", sm2)
        m.add("sm2", sm2)
        with self.assertRaises(RuntimeError):
            m.add("x", sm2)
Esempio n. 3
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. 4
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. 5
0
    def test_ModelTest_CheckAddParameter(self):
        m = Model()
        p1 = Parameter()
        p2 = Parameter()
        p3 = Parameter()

        m.add("p1", p1)
        m.add("p1", p1)
        with self.assertRaises(RuntimeError):
            m.add("x", p1)

        with self.assertRaises(RuntimeError):
            m.add("p1", p2)
        m.add("p2", p2)
        m.add("p2", p2)
        with self.assertRaises(RuntimeError):
            m.add("x", p2)

        with self.assertRaises(RuntimeError):
            m.add("p1", p3)
        with self.assertRaises(RuntimeError):
            m.add("p2", p3)
        m.add("p3", p3)
        m.add("p3", p3)
        with self.assertRaises(RuntimeError):
            m.add("x", p3)
Esempio n. 6
0
    def test_ModelTest_CheckGetTrainableParametersWithSubmodels(self):
        m1 = Model()
        m2 = Model()
        m3 = Model()
        p1 = Parameter()
        p2 = Parameter()
        p3 = Parameter()
        m1.add("p", p1)
        m2.add("p", p2)
        m3.add("p", p3)
        m1.add("sm", m2)
        m2.add("sm", m3)

        params1 = m1.get_trainable_parameters()
        self.assertEqual(3, len(params1))
        self.assertIsInstance(params1, dict)
        self.assertIs(p1, params1[("p",)])
        self.assertIs(p2, params1[("sm", "p",)])
        self.assertIs(p3, params1[("sm", "sm", "p",)])

        params2 = m2.get_trainable_parameters()
        self.assertEqual(2, len(params2))
        self.assertIsInstance(params2, dict)
        self.assertIs(p2, params2[("p",)])
        self.assertIs(p3, params2[("sm", "p",)])

        params3 = m3.get_trainable_parameters()
        self.assertEqual(1, len(params3))
        self.assertIsInstance(params3, dict)
        self.assertIs(p3, params3[("p",)])
Esempio n. 7
0
def main():

    with DefaultScopeDevice(CPUDevice()):
        pw1 = Parameter("w1", [8, 2], I.XavierUniform())
        pb1 = Parameter("b1", [8], I.Constant(0))
        pw2 = Parameter("w2", [1, 8], I.XavierUniform())
        pb2 = Parameter("b2", [], I.Constant(0))

        trainer = T.SGD(0.1)

        trainer.add_parameter(pw1)
        trainer.add_parameter(pb1)
        trainer.add_parameter(pw2)
        trainer.add_parameter(pb2)

        input_data = np.array(
            [
                [1, 1],  # Sample 1
                [1, -1],  # Sample 2
                [-1, 1],  # Sample 3
                [-1, -1],  # Sample 4
            ],
            dtype=np.float32)

        output_data = np.array(
            [
                1,  # Label 1
                -1,  # Label 2
                -1,  # Label 3
                1,  # Label 4
            ],
            dtype=np.float32)

        for i in range(100):
            g = Graph()
            with DefaultScopeGraph(g):
                # Builds a computation graph.
                #x = F.input(shape=Shape([2], 4), data=input_data)
                x = F.input(data=input_data)
                w1 = F.input(param=pw1)
                b1 = F.input(param=pb1)
                w2 = F.input(param=pw2)
                b2 = F.input(param=pb2)
                h = F.tanh(F.matmul(w1, x) + b1)
                y = F.matmul(w2, h) + b2

                # Calculates values.
                y_val = g.forward(y).to_list()
                print("epoch ", i, ":")
                for j in range(4):
                    print("  [", j, "]: ", y_val[j])
                    #t = F.input(shape=Shape([], 4), data=output_data)
                    t = F.input(data=output_data)
                diff = t - y
                loss = F.batch.mean(diff * diff)
                loss_val = g.forward(loss).to_list()[0]
                print("  loss: ", loss_val)
                trainer.reset_gradients()
                g.backward(loss)
                trainer.update()
Esempio n. 8
0
 def test_model_invalid_operation(self):
     model1 = Model()
     model2 = Model()
     model1.add("m", model2)
     param = Parameter()
     model1.add("p", param)
     with self.assertRaises(TypeError) as e:
         model1["notfound"]
     self.assertEqual(
         str(e.exception),
         "'name' is not a name of neither parameter nor submodel")
     with self.assertRaises(TypeError):
         del model1["p"]
     with self.assertRaises(TypeError):
         del model1["m"]
     with self.assertRaises(TypeError):
         del model1[0]
     with self.assertRaises(TypeError):
         model1[(0, 1)]
     with self.assertRaises(TypeError):
         model1[[0, 1]]
     model3 = TestModel()
     model3.p = Parameter()
     model3.m = TestModel()
     model3.a = "test"
     del model3.a
     self.assertNotIn("a", model3.__dict__)
     with self.assertRaises(TypeError):
         del model3.p
     self.assertIn("p", model3.__dict__)
     with self.assertRaises(TypeError):
         del model3.m
     self.assertIn("m", model3.__dict__)
Esempio n. 9
0
    def __init__(self, dropout):
        self.dropout = dropout

        self.pw1 = Parameter()
        self.pb1 = Parameter()
        self.pw2 = Parameter()
        self.pb2 = Parameter()
        self.scan_attributes()
Esempio n. 10
0
    def __init__(self, max_len, dropout):
        self.max_len = max_len
        self.dropout = dropout
        self.pe = None

        self.plookup = Parameter()
        self.pby = Parameter()
        self.scan_attributes()
Esempio n. 11
0
 def __init__(self, in_size, out_size, trainer):
     self.out_size_ = out_size
     self.pwxh_ = Parameter([4 * out_size, in_size], I.Uniform(-0.1, 0.1))
     self.pwhh_ = Parameter([4 * out_size, out_size], I.Uniform(-0.1, 0.1))
     self.pbh_ = Parameter([4 * out_size], I.Constant(0))
     trainer.add_parameter(self.pwxh_)
     trainer.add_parameter(self.pwhh_)
     trainer.add_parameter(self.pbh_)
Esempio n. 12
0
 def __init__(self, in_size, out_size, trainer):
     self.out_size_ = out_size
     self.pw_ = Parameter([3 * out_size, in_size], I.Uniform(-0.1, 0.1))
     self.pbf_ = Parameter([out_size], I.Constant(0))
     self.pbr_ = Parameter([out_size], I.Constant(0))
     trainer.add_parameter(self.pw_)
     trainer.add_parameter(self.pbf_)
     trainer.add_parameter(self.pbr_)
Esempio n. 13
0
 def __init__(self):
     self.dropout_rate = DROPOUT_RATE
     self.psrc_lookup = Parameter()
     self.ptrg_lookup = Parameter()
     self.pwhy = Parameter()
     self.pby = Parameter()
     self.src_lstm = LSTM()
     self.trg_lstm = LSTM()
     self.scan_attributes()
Esempio n. 14
0
    def test_Parameter_argument(self):
        # no argument
        p = Parameter()
        self.assertFalse(p.valid())

        # shape w/ Initializer
        p = Parameter(Shape([4, 3]), I.Constant(1))
        self.assertEqual(p.shape(), Shape([4, 3]))
        self.assertEqual(p.value.to_list(), [1] * 12)
Esempio n. 15
0
 def __init__(self, vocab_size, eos_id):
     self.eos_id = eos_id
     self.pwlookup = Parameter([NUM_HIDDEN_UNITS, vocab_size],
                               I.XavierUniform())
     self.pwxs = Parameter([NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS],
                           I.XavierUniform())
     self.pwsy = Parameter([vocab_size, NUM_HIDDEN_UNITS],
                           I.XavierUniform())
     self.add_all_parameters()
Esempio n. 16
0
    def __init__(self, n_heads, dropout):
        self.dropout = dropout
        self.n_heads = n_heads

        self.pwq = Parameter()
        self.pwk = Parameter()
        self.pwv = Parameter()
        self.pwo = Parameter()
        self.attention = ScaledDotProductAttention(dropout)
        self.scan_attributes()
Esempio n. 17
0
 def __init__(self, vocab_size, eos_id, trainer):
     self.eos_id_ = eos_id
     self.pwlookup_ = Parameter([NUM_HIDDEN_UNITS, vocab_size],
                                I.XavierUniform())
     self.pwxs_ = Parameter([NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS],
                            I.XavierUniform())
     self.pwsy_ = Parameter([vocab_size, NUM_HIDDEN_UNITS],
                            I.XavierUniform())
     trainer.add_parameter(self.pwlookup_)
     trainer.add_parameter(self.pwxs_)
     trainer.add_parameter(self.pwsy_)
Esempio n. 18
0
 def __init__(self, name, src_vocab_size, trg_vocab_size, embed_size,
              hidden_size, dropout_rate):
     self.name_ = name
     self.dropout_rate_ = dropout_rate
     self.psrc_lookup_ = Parameter([embed_size, src_vocab_size],
                                   I.XavierUniform())
     self.ptrg_lookup_ = Parameter([embed_size, trg_vocab_size],
                                   I.XavierUniform())
     self.pwhy_ = Parameter([trg_vocab_size, hidden_size],
                            I.XavierUniform())
     self.pby_ = Parameter([trg_vocab_size], I.Constant(0))
     self.src_lstm_ = LSTM(name + "_src_lstm", embed_size, hidden_size)
     self.trg_lstm_ = LSTM(name + "_trg_lstm", embed_size, hidden_size)
Esempio n. 19
0
 def test_ModelTest_CheckGetTrainableParameters(self):
     m = Model()
     p1 = Parameter()
     p2 = Parameter()
     p3 = Parameter()
     m.add("p1", p1)
     m.add("p2", p2)
     m.add("p3", p3)
     params = m.get_trainable_parameters()
     self.assertEqual(3, len(params))
     self.assertIsInstance(params, dict)
     self.assertIs(p1, params[("p1",)]);
     self.assertIs(p2, params[("p2",)]);
     self.assertIs(p3, params[("p3",)]);
Esempio n. 20
0
    def test_device_instance(self):
        dev = Device.get_default()
        self.assertIs(dev, self.device)

        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], device=my_device)
        dev = node.device()
        self.assertIs(dev, my_device)

        dev = self.graph.get_device(node)
        self.assertIs(dev, my_device)

        param = Parameter([], I.Constant(1))
        dev = param.device()
        self.assertIs(dev, self.device)
Esempio n. 21
0
 def test_pyoptimizer_parameter(self):
     dev = D.Naive()
     Device.set_default(dev)
     pw1 = Parameter([8, 2], I.XavierUniform())
     self.t.add(pw1)
     self.assertIn("testadam-m1", pw1.stats)
     self.assertIn("testadam-m2", pw1.stats)
Esempio n. 22
0
 def __init__(self, vocab_size, eos_id):
     self.eos_id = eos_id
     self.plookup = Parameter([NUM_HIDDEN_UNITS, vocab_size], I.Uniform(-0.1, 0.1))
     self.rnn1 = LSTM(NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS)
     self.rnn2 = LSTM(NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS)
     self.hy = Affine(NUM_HIDDEN_UNITS, vocab_size)
     self.scan_attributes()
Esempio n. 23
0
 def __init__(self, vocab_size, eos_id, trainer):
     self.eos_id_ = eos_id
     self.plookup_ = Parameter([NUM_HIDDEN_UNITS, vocab_size],
                               I.Uniform(-0.1, 0.1))
     self.rnn1_ = SRU(NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS, trainer)
     self.rnn2_ = SRU(NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS, trainer)
     self.hy_ = Affine(NUM_HIDDEN_UNITS, vocab_size, trainer)
     trainer.add_parameter(self.plookup_)
Esempio n. 24
0
 def __init__(self, vocab_size, eos_id):
     self.eos_id = eos_id
     self.plookup = Parameter([NUM_HIDDEN_UNITS, vocab_size], I.Uniform(-0.1, 0.1))
     self.rnn1 = LSTM(NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS)
     self.rnn2 = LSTM(NUM_HIDDEN_UNITS, NUM_HIDDEN_UNITS)
     self.hy = Affine(NUM_HIDDEN_UNITS, vocab_size)
     self.add_all_parameters()
     self.add_all_submodels()
Esempio n. 25
0
 def test_model_setattr(self):
     model = TestModel()
     model.p1 = Parameter()
     model.p2 = Parameter()
     model.p3 = Parameter()
     model.m1 = TestModel()
     model.m2 = TestModel()
     model.m3 = TestModel()
     self.assertIs(model["p1"], model.p1)
     self.assertIs(model["p2"], model.p2)
     self.assertIs(model["p3"], model.p3)
     model.p4 = Parameter()
     self.assertIs(model["m1"], model.m1)
     self.assertIs(model["m2"], model.m2)
     self.assertIs(model["m3"], model.m3)
     model.m4 = TestModel()
     self.assertIs(model["p4"], model.p4)
     self.assertIs(model["m4"], model.m4)
Esempio n. 26
0
    def test_ModelTest_CheckGetParameteer(self):
        m = Model()
        sm = Model()
        p1 = Parameter()
        p2 = Parameter()
        p3 = Parameter()
        m.add("p1", p1)
        m.add("p2", p2)
        sm.add("p3", p3)
        m.add("sm", sm)

        self.assertIs(p1, m["p1"])
        self.assertIs(p2, m["p2"])
        with self.assertRaises(TypeError):
            m["p3"]
        self.assertIs(sm, m["sm"])
        with self.assertRaises(TypeError):
            m["x"]
Esempio n. 27
0
 def test_model_get_all_parameters(self):
     submodel = TestModel()
     submodel.sp1 = Parameter()
     submodel.sp2 = Parameter()
     submodel.add("sp1", submodel.sp1)
     submodel.add("sp2", submodel.sp2)
     parentmodel = TestModel()
     parentmodel.p1 = Parameter()
     parentmodel.p2 = Parameter()
     parentmodel.sub = submodel
     parentmodel.add("p1", parentmodel.p1)
     parentmodel.add("p2", parentmodel.p2)
     parentmodel.add("sub", parentmodel.sub)
     params = parentmodel.get_all_parameters()
     self.assertIs(params[("p1", )], parentmodel.p1)
     self.assertIs(params[("p2", )], parentmodel.p2)
     self.assertIs(params[("sub", "sp1")], parentmodel.sub.sp1)
     self.assertIs(params[("sub", "sp2")], parentmodel.sub.sp2)
Esempio n. 28
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. 29
0
 def test_model_parameter_deep(self):
     model1 = Model()
     model2 = Model()
     model1.add("m2", model2)
     model3 = Model()
     model2.add("m3", model3)
     param = Parameter()
     model3.add("p", param)
     self.assertIs(model1["m2", "m3", "p"], param)
     self.assertIs(model1["m2"]["m3"]["p"], param)
Esempio n. 30
0
def train_func(trainer):
    dev = D.Naive(12345)
    Device.set_default(dev)
    g = Graph()
    Graph.set_default(g)

    pw1 = Parameter([8, 2], I.XavierUniform())
    pb1 = Parameter([8], I.Constant(0))
    pw2 = Parameter([1, 8], I.XavierUniform())
    pb2 = Parameter([1], I.Constant(0))

    trainer.add_parameter(pw1)
    trainer.add_parameter(pb1)
    trainer.add_parameter(pw2)
    trainer.add_parameter(pb2)

    input_data = [1, 1, 1, -1, -1, 1, -1, -1]
    output_data = [1, -1, -1, 1]

    for i in range(10):
        g.clear()
        x = F.input(input_data, Shape([2], 4))
        w1 = F.parameter(pw1)
        b1 = F.parameter(pb1)
        w2 = F.parameter(pw2)
        b2 = F.parameter(pb2)
        h = F.tanh(w1 @ x + b1)
        y = w2 @ h + b2

        t = F.input(output_data, Shape([], 4))
        diff = t - y
        loss = F.batch.mean(diff * diff)

        trainer.reset_gradients()
        loss.backward()
        trainer.update()

    return [
        pw1.value.to_list(),
        pb1.value.to_list(),
        pw2.value.to_list(),
        pb2.value.to_list()
    ]