コード例 #1
0
    def test_fprop_faster(self):
        activation = "tanh"
        seed = 1234
        repeat = 1000

        layer = LayerLSTM(input_size=DATA['features_size'],
                          hidden_size=DATA['hidden_size'],
                          activation=activation)

        layer.initialize(initer.UniformInitializer(seed))

        layer_fast = LayerLSTMFast(input_size=DATA['features_size'],
                                   hidden_size=DATA['hidden_size'],
                                   activation=activation)

        # Wi, Wo, Wf, Wm
        layer_fast.W.set_value(
            np.concatenate([
                layer.Wi.get_value(),
                layer.Wo.get_value(),
                layer.Wf.get_value(),
                layer.Wm.get_value()
            ],
                           axis=1))
        layer_fast.U.set_value(
            np.concatenate([
                layer.Ui.get_value(),
                layer.Uo.get_value(),
                layer.Uf.get_value(),
                layer.Um.get_value()
            ],
                           axis=1))

        input = T.matrix('input')
        input.tag.test_value = DATA['batch_one_step']
        last_h = sharedX(DATA['state_h'])
        last_m = sharedX(DATA['state_m'])

        fprop = theano.function([input], layer.fprop(input, last_h, last_m))
        fprop_faster = theano.function([input],
                                       layer_fast.fprop(input, last_h, last_m))

        fprop_time = measure("h, m = fprop(DATA['batch_one_step'])", repeat)
        fprop_faster_time = measure(
            "h, m = fprop_faster(DATA['batch_one_step'])", repeat)

        print("fprop time: {:.2f} sec.", fprop_time)
        print("fprop faster time: {:.2f} sec.", fprop_faster_time)
        print("Speedup: {:.2f}x".format(fprop_time / fprop_faster_time))

        for i in range(DATA['seq_len']):
            h1, m1 = fprop(DATA['batch'][:, i, :])
            h2, m2 = fprop_faster(DATA['batch'][:, i, :])
            assert_array_equal(h1, h2)
            assert_array_equal(m1, m2)
コード例 #2
0
ファイル: test_lstm.py プロジェクト: ppoulin91/learn2track
    def test_fprop(self):
        activation = "tanh"
        seed = 1234
        repeat = 1000

        layer = LayerLSTM(input_size=DATA['features_size'],
                          hidden_size=DATA['hidden_size'],
                          activation=activation)

        layer.initialize(initer.UniformInitializer(seed))

        # input = T.tensor3('input')
        input = T.matrix('input')
        input.tag.test_value = DATA['batch_one_step']
        last_h = sharedX(DATA['state_h'])
        last_m = sharedX(DATA['state_m'])

        fprop = theano.function([input], layer.fprop_faster(input, last_h, last_m))
        fprop_time = measure("h, m = fprop(DATA['batch_one_step'])", repeat)
        print("fprop time: {:.2f} sec.", fprop_time)
        h, m = fprop(DATA['batch_one_step'])
コード例 #3
0
ファイル: test_lstm.py プロジェクト: ppoulin91/learn2track
    def test_fprop_faster(self):
        activation = "tanh"
        seed = 1234
        repeat = 1000

        layer = LayerLSTM(input_size=DATA['features_size'],
                          hidden_size=DATA['hidden_size'],
                          activation=activation)

        layer.initialize(initer.UniformInitializer(seed))

        layer_fast = LayerLSTMFast(input_size=DATA['features_size'],
                                   hidden_size=DATA['hidden_size'],
                                   activation=activation)

        # Wi, Wo, Wf, Wm
        layer_fast.W.set_value(np.concatenate([layer.Wi.get_value(), layer.Wo.get_value(), layer.Wf.get_value(), layer.Wm.get_value()], axis=1))
        layer_fast.U.set_value(np.concatenate([layer.Ui.get_value(), layer.Uo.get_value(), layer.Uf.get_value(), layer.Um.get_value()], axis=1))

        input = T.matrix('input')
        input.tag.test_value = DATA['batch_one_step']
        last_h = sharedX(DATA['state_h'])
        last_m = sharedX(DATA['state_m'])

        fprop = theano.function([input], layer.fprop(input, last_h, last_m))
        fprop_faster = theano.function([input], layer_fast.fprop(input, last_h, last_m))

        fprop_time = measure("h, m = fprop(DATA['batch_one_step'])", repeat)
        fprop_faster_time = measure("h, m = fprop_faster(DATA['batch_one_step'])", repeat)

        print("fprop time: {:.2f} sec.", fprop_time)
        print("fprop faster time: {:.2f} sec.", fprop_faster_time)
        print("Speedup: {:.2f}x".format(fprop_time/fprop_faster_time))

        for i in range(DATA['seq_len']):
            h1, m1 = fprop(DATA['batch'][:, i, :])
            h2, m2 = fprop_faster(DATA['batch'][:, i, :])
            assert_array_equal(h1, h2)
            assert_array_equal(m1, m2)
コード例 #4
0
    def test_fprop(self):
        activation = "tanh"
        seed = 1234
        repeat = 1000

        layer = LayerLSTM(input_size=DATA['features_size'],
                          hidden_size=DATA['hidden_size'],
                          activation=activation)

        layer.initialize(initer.UniformInitializer(seed))

        # input = T.tensor3('input')
        input = T.matrix('input')
        input.tag.test_value = DATA['batch_one_step']
        last_h = sharedX(DATA['state_h'])
        last_m = sharedX(DATA['state_m'])

        fprop = theano.function([input],
                                layer.fprop_faster(input, last_h, last_m))
        fprop_time = measure("h, m = fprop(DATA['batch_one_step'])", repeat)
        print("fprop time: {:.2f} sec.", fprop_time)
        h, m = fprop(DATA['batch_one_step'])