示例#1
0
    def test_NNET_train(self):
        struct = 'w2vec(/project/nakamura-lab01/Work/truong-dq/chainer/vidnn/exp/word2vec_truecase_200/vectors.bin):lstm(200-2):linear(2-2)'
        # struct = 'embed(2-200):lstm(200-2):linear(2-2)'
        nnet = NNET_Model.parse_structure(struct)

        # Testing variable
        test_var = chainer.Variable(np.asarray([1], dtype=np.int32))
        output_before_train = nnet(test_var).data


        inp = chainer.Variable(np.asarray([1], dtype=np.int32))
        target = chainer.Variable(np.asarray([0], dtype=np.int32))
        output = nnet(inp)
        loss = F.softmax_cross_entropy(output, target)
        optimizer = optimizers.SGD(lr=0.1)
        optimizer.setup(nnet)
        optimizer.zero_grads()
        loss.backward()
        optimizer.update()
        
        inp = chainer.Variable(np.asarray([0], dtype=np.int32))
        target = chainer.Variable(np.asarray([0], dtype=np.int32))
        output = nnet(inp)
        loss = F.softmax_cross_entropy(output, target)
        optimizer = optimizers.SGD(lr=0.1)
        optimizer.setup(nnet)
        optimizer.zero_grads()
        loss.backward()
        optimizer.update()

        
        nnet.save('test_output')
        nnet_2 = NNET_Model.load('test_output')
        nnet.forget_history()
        nnet_2.forget_history()

        np.testing.assert_equal(nnet[0][1].W.data, nnet_2[0][1].W.data)
        np.testing.assert_equal(nnet[1][1].upward.W.data, nnet_2[1][1].upward.W.data)
        np.testing.assert_equal(nnet[1][1].lateral.W.data, nnet_2[1][1].lateral.W.data)
        np.testing.assert_equal(nnet[1][1].upward.b.data, nnet_2[1][1].upward.b.data)

        output_after_train = nnet(test_var).data
        output_after_load = nnet_2(test_var).data
        
       
        after_first_layer_nnet = nnet[0][1](test_var)
        after_first_layer_nnet_2 = nnet_2[0][1](test_var)
        np.testing.assert_equal(after_first_layer_nnet.data, after_first_layer_nnet_2.data)
        
        after_first_layer_nnet.volatile = False
        after_first_layer_nnet_2.volatile = False
        after_second_layer_nnet = nnet[1][1](after_first_layer_nnet)
        after_second_layer_nnet_2 = nnet_2[1][1](after_first_layer_nnet_2)
        np.testing.assert_equal(after_second_layer_nnet.data, after_second_layer_nnet_2.data)
        
        assert (output_before_train != output_after_train).any()
        assert (output_before_train != output_after_load).any()
        np.testing.assert_equal(output_after_train, output_after_load)
示例#2
0
    def test_NNET_save(self):
        struct = 'embed(2-2):lstm(2-2)'
        nnet = NNET_Model.parse_structure(struct)
        nnet.save('test_output')
        
        nnet2 = NNET_Model.load('test_output')
        inp = chainer.Variable(np.asarray([1], dtype=np.int32))

        np.testing.assert_equal(nnet[0][1].W.data, nnet2[0][1].W.data)
        np.testing.assert_equal(nnet[0][1](inp).data, nnet2[0][1](inp).data)

        np.testing.assert_equal(nnet(inp).data, nnet2(inp).data)
        
        struct = 'embed(2-2):lstm(2-3):linear(3-2)'
        nnet = NNET_Model.parse_structure(struct)
        nnet.save('test_output')
        
        nnet2 = NNET_Model.load('test_output')
        inp = chainer.Variable(np.asarray([1], dtype=np.int32))
        np.testing.assert_equal(nnet(inp).data, nnet2(inp).data)
示例#3
0
 def test_NNET_load(self):
     struct = 'linear(2-4):sigmoid:tanh:dropout:lstm(10-10)'
     nnet = NNET_Model.parse_structure(struct)
     nnet.save('test_save_model')
     another = NNET_Model.load('test_save_model')
示例#4
0
 def test_NNET_parse_struct(self):
     struct = 'linear(2-4):sigmoid:tanh:dropout:lstm(10-10)'
     nnet = NNET_Model.parse_structure(struct)
     self.assertIsInstance(nnet['linear(2-4)-c0'], L.Linear)
     self.assertIsInstance(nnet['lstm(10-10)-c4'], L.LSTM)