def test_initialize_stdnormal(): model = GMM(num_comp=1, x_dim=x_dim) model.initialize() assert (model.pi == 1) assert_allclose(model.mu, np.zeros((1, x_dim))) assert_allclose(model.Lambda[0], np.eye(x_dim))
def test_initialize_kmeans(): model1 = create_pdf() x = model1.sample(num_samples=num_samples_init) model2 = GMM(num_comp=4, x_dim=x_dim) model2.initialize(x) print(model1.mu) print(model2.mu[[2, 3, 1, 0]])
def test_fit_kmeans(): model1 = create_pdf() model1.initialize() x = model1.sample(num_samples_train) x_val = model1.sample(num_samples) model2 = GMM(num_comp=4, x_dim=x_dim) model2.initialize(x) elbo = model2.fit(x, x_val=x_val) model2.plot2D(feat_idx=[0, 1], num_sigmas=1) plt.savefig(output_dir + '/plot_fit_kmeans_init_D01.pdf') plt.close() model2.plot2D(feat_idx=[0, 2], num_sigmas=1) plt.savefig(output_dir + '/plot_fit_kmeans_init_D02.pdf') plt.close() plt.figure() plt.plot(np.repeat(model1.elbo(x) / x.shape[0], len(elbo[1])), 'b') plt.plot(np.repeat(model1.elbo(x_val) / x.shape[0], len(elbo[1])), 'b--') plt.plot(elbo[1], 'r') plt.plot(elbo[3], 'r--') plt.savefig('./tests/data_out/gmm_fit_kmeans_init_elbo.pdf') plt.close()
def test_initialize(): model1 = create_pdf() model1.initialize() model2 = GMM(num_comp=model1.num_comp, pi=model1.pi, eta=model1.eta, x_dim=model1.x_dim) assert_allclose(model1.eta, model2.eta) model2.initialize() model3 = GMM(num_comp=model2.num_comp, pi=model2.pi, mu=model2.mu, Lambda=model2.Lambda, x_dim=model1.x_dim) assert_allclose(model1.eta, model3.eta, atol=1e-5) model3.initialize() assert_allclose(model1.eta, model2.eta, atol=1e-5) assert_allclose(model1.eta, model3.eta, atol=1e-5) assert_allclose(model1.A, model2.A) assert_allclose(model1.A, model3.A) assert_allclose(model1.mu, model2.mu, atol=1e-10) assert_allclose(model1.mu, model3.mu, atol=1e-10) assert_allclose(model1.Lambda, model2.Lambda) assert_allclose(model1.Lambda, model3.Lambda)
def create_diag_pdf(): model_diag = GMMDiagCov(num_comp=len(pi1), pi=pi1, mu=mu1, Lambda=1 / S1, x_dim=x_dim) model = GMM(num_comp=len(pi1), pi=pi1, mu=mu1, Lambda=L1dc, x_dim=x_dim) return model, model_diag
def test_diag_initialize(): model1, model1_diag = create_diag_pdf() model1.initialize() model1_diag.initialize() model2 = GMM(num_comp=model1.num_comp, pi=model1.pi, eta=model1.eta, x_dim=model1.x_dim) model2.initialize() assert_allclose(model1.compute_A_std(model1.mu, model1.Lambda), model1_diag.A) assert_allclose(model1.compute_A_nat(model1.eta), model1_diag.A) assert_allclose(model1.A, model1_diag.A) assert_allclose(model2.A, model1_diag.A) assert_allclose(model1.mu, model1_diag.mu) assert_allclose(model2.mu, model1_diag.mu) for k in xrange(model1.num_comp): assert_allclose(model1.Lambda[k], np.diag(model1_diag.Lambda[k])) assert_allclose(model2.Lambda[k], np.diag(model1_diag.Lambda[k]))
def create_pdf(): model = GMM(num_comp=len(pi1), pi=pi1, mu=mu1, Lambda=L1fc, x_dim=x_dim) return model