Ejemplo n.º 1
0
    def test_kldiv(self):
        p = np.array([[0.1, 0.4, 0.3, 0.9]])
        q1 = np.array([[0.1, 0.2, 0.2, 0.5]])
        q2 = np.array([[0.1, 0.4, 0.3, 0.8]])

        self.assertTrue(TopicModel.kldiv(p, p) == 0)

        d1 = TopicModel.kldiv(p, q1)
        self.assertGreater(d1, 0)
        d2 = TopicModel.kldiv(p, q2)
        self.assertGreater(d1, d2)
Ejemplo n.º 2
0
    def test_save_and_load_model(self):
        batch_size = 100

        pre_model = self.create_test_model()
        pre_model.train(iter=batch_size, burn=0)
        self.assertTrue(len(pre_model.core.trace("z_0")[:]) == batch_size)
        pre_z = [z.value for z in pre_model.variables["z"]]
        p1 = pre_model.perplexity()
        pre_model.save()

        r = self.get_resource()
        post_model = TopicModel.load(r.path)
        post_z = [z.value for z in post_model.variables["z"]]
        for i, z in enumerate(post_z):
            self.assertEqual(0, sum(z != pre_z[i]))
        p2 = post_model.perplexity()

        post_model.train(iter=batch_size, burn=0)
        self.assertTrue(len(post_model.core.trace("z_0", chain=None)[:]) == (2 * batch_size))
        self.assertEqual(p1, p2)