def load_data(self): """ Loads data from disk and stores it in memory. data[0], data[1]: (batch_size, num_steps, time_stamps) """ data = DataGenerator(self.config.data_type) self.train_data = np.array(data.generate_data(self.config.batch_size, self.config.num_steps, data_set='train')) self.valid_data = np.array(data.generate_data(self.config.batch_size, self.config.num_steps, data_set='valid')) self.test_data = np.array(data.generate_data(self.config.batch_size, self.config.num_steps, data_set='test'))
import numpy as np import matplotlib.pyplot as plt from scipy.stats import multivariate_normal as mnorm from scipy.special import logsumexp from utils import PlotGmm, DataGenerator ## Generate Data n = 1000 dg = DataGenerator(n) x, z = dg.generate_data() ## Plot GMM plot_gmm = PlotGmm() plot_gmm.plot_data(x, z, dg.mu, dg.cov, dg.pi) ## Initial Parameters khat = 2 pi_hat = np.random.uniform(size=khat) pi_hat /= pi_hat.sum() mu_hat = np.random.normal(size=(khat, 2)) cov_hat = np.zeros((khat, 2, 2)) for s in cov_hat: np.fill_diagonal(s, np.random.uniform(size=(2, ))) # Collapse one component # pi_hat[-1] = 0.01 # pi_hat /= pi_hat.sum() # mu_hat[-1] = x[0] # cov_hat[-1] = np.eye(2) * 1e-20 # ax.plot(*mu_hat[-1], ms=20, marker='o', mfc="None", lw=3)