Exemplo n.º 1
0
    def test_LearnBeginningMode(self):
        """ testing learn_beginning mode.
        """
        print("\nDyBMTestCase.testLearnFirstMode")

        length = 300
        period = 60
        std = 0
        dim = 1
        data = NoisySin(length, period, std, dim).to_list()

        print("\nlearn_beginning = True (Default mode)")
        for d in xrange(10, 20):
            model = BatchLinearDyBM(dim, delay=d, learn_beginning=True)
            model.fit(data)
            result = model.get_predictions(data)
            rmse = RMSE(result[d:], data[d:])
            print("Training RMSE", rmse)
            self.assertLessEqual(rmse, 0.1)

        print("\nlearn_beginning = False")
        for d in xrange(10, 20):
            model = BatchLinearDyBM(dim, delay=d, learn_beginning=False)
            model.fit(data)
            result = model.get_predictions(data)
            rmse = RMSE(result[d:], data[d:])
            print("Training RMSE", rmse)
            self.assertLessEqual(rmse, 0.1)
Exemplo n.º 2
0
 def test_GenerativeBatchLinearDyBM(self):
     """ testing minimal consistency in learning a sequence
     """
     print("\nDyBMTestCase.testGenerativeBatchLinearDyBM")
     for delay in [1, 3]:
         for SGD in [AdaGrad]:
             for GENERATOR in [True]:
                 model = BatchLinearDyBM(self.in_dim, self.in_dim, delay,
                                         SGD=SGD())
                 model.set_learning_rate(self.rate)
                 i = tests.simple.test_real_model(model, self.max_repeat,
                                                  GENERATOR)
                 self.assertLess(i, self.max_repeat)
Exemplo n.º 3
0
    def test_LearnMultiSequences(self):
        """ testing learn_beginning mode.
        """
        print("\nDyBMTestCase.testLearnMultiSequences")

        seqs = list()
        for i in xrange(10):
            length = 300
            period = 60
            std = 0.1 * i
            dim = 1
            data = NoisySin(length, period, std, dim).to_list()
            seqs.append(data)

        for d in xrange(10, 20):
            model = BatchLinearDyBM(dim, delay=d, learn_beginning=True)
            model.fit_multi_seqs(seqs)
            result = model.get_predictions(seqs[0])
            rmse = RMSE(result[d:], seqs[0][d:])
            print("Training RMSE", rmse)
            self.assertLessEqual(rmse, 0.2)
Exemplo n.º 4
0
    def test_LearnSequenceBatch(self):
        """ testing learning with Sequence
        """
        print("\nBatchDyBMTestCase.testLearnSequenceBatch")
        batch = 3
        in_mean = 1.0
        out_mean = 2.0
        d = 0.01
        delay = 1
        rates = [0.5, 0.8]
        L1 = 0.1
        L2 = 0.1

        print("\n * testing wo_delay")
        random = amath.random.RandomState(0)
        in_seq = random.uniform(low=in_mean - d,
                                high=in_mean + d,
                                size=(batch, self.in_dim))
        model = BatchLinearDyBM(self.in_dim,
                                self.in_dim,
                                delay=delay,
                                decay_rates=rates,
                                L1=L1,
                                L2=L2,
                                insert_to_etrace="wo_delay")
        model.set_learning_rate(0.1)
        model.learn_batch(in_seq)
        model.fit(in_seq)
        model.init_state()
        prediction = model.predict(in_seq)
        print("RMSE:", self._compute_rmse(prediction, in_seq))

        random = amath.random.RandomState(0)
        in_seq = random.uniform(low=in_mean - d,
                                high=in_mean + d,
                                size=(batch, self.in_dim))
        random = amath.random.RandomState(0)
        out_seq = random.uniform(low=out_mean - d,
                                 high=out_mean + d,
                                 size=(batch, self.out_dim))

        model = BatchLinearDyBM(self.in_dim,
                                self.out_dim,
                                delay=delay,
                                decay_rates=rates,
                                L1=L1,
                                L2=L2,
                                insert_to_etrace="wo_delay")
        model.set_learning_rate(0.1)
        model.learn_batch(in_seq, out_seq)
        model.fit(in_seq, out_seq)
        model.init_state()
        prediction = model.predict(in_seq)
        print("RMSE:", self._compute_rmse(prediction, out_seq))

        print("\n * testing w_delay")
        random = amath.random.RandomState(0)
        in_seq = random.uniform(low=in_mean - d,
                                high=in_mean + d,
                                size=(batch, self.in_dim))
        model = BatchLinearDyBM(self.in_dim,
                                self.in_dim,
                                delay=delay,
                                decay_rates=rates,
                                L1=L1,
                                L2=L2,
                                insert_to_etrace="w_delay")
        model.set_learning_rate(0.1)
        model.learn_batch(in_seq)
        model.fit(in_seq)
        model.init_state()
        prediction = model.predict(in_seq)
        print("RMSE:", self._compute_rmse(prediction, in_seq))

        random = amath.random.RandomState(0)
        in_seq = random.uniform(low=in_mean - d,
                                high=in_mean + d,
                                size=(batch, self.in_dim))
        random = amath.random.RandomState(0)
        out_seq = random.uniform(low=out_mean - d,
                                 high=out_mean + d,
                                 size=(batch, self.out_dim))

        model = BatchLinearDyBM(self.in_dim,
                                self.out_dim,
                                delay=delay,
                                decay_rates=rates,
                                L1=L1,
                                L2=L2,
                                insert_to_etrace="w_delay")
        model.set_learning_rate(0.1)
        model.learn_batch(in_seq, out_seq)
        model.fit(in_seq, out_seq)
        model.init_state()
        prediction = model.predict(in_seq)
        print("RMSE:", self._compute_rmse(prediction, out_seq))

        print("\n * testing w_delay using Lasso")
        random = amath.random.RandomState(0)
        in_seq = random.uniform(low=in_mean - d,
                                high=in_mean + d,
                                size=(batch, self.in_dim))
        model = BatchLinearDyBM(self.in_dim,
                                self.in_dim,
                                delay=delay,
                                decay_rates=rates,
                                L1=L1,
                                L2=L2,
                                insert_to_etrace="w_delay",
                                batch_method="Lasso")
        model.set_learning_rate(0.1)
        model.learn_batch(in_seq)
        model.fit(in_seq)
        model.init_state()
        prediction = model.predict(in_seq)
        print("RMSE:", self._compute_rmse(prediction, in_seq))

        random = amath.random.RandomState(0)
        in_seq = random.uniform(low=in_mean - d,
                                high=in_mean + d,
                                size=(batch, self.in_dim))
        random = amath.random.RandomState(0)
        out_seq = random.uniform(low=out_mean - d,
                                 high=out_mean + d,
                                 size=(batch, self.out_dim))

        model = BatchLinearDyBM(self.in_dim,
                                self.out_dim,
                                delay=delay,
                                decay_rates=rates,
                                L1=L1,
                                L2=L2,
                                insert_to_etrace="w_delay",
                                batch_method="Lasso")
        model.set_learning_rate(0.1)
        model.learn_batch(in_seq, out_seq)
        model.fit(in_seq, out_seq)
        model.init_state()
        prediction = model.predict(in_seq)
        print("RMSE:", self._compute_rmse(prediction, out_seq))