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)
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)