z_4_shape = z_4_t.shape z_4_in = z_4_t.reshape((z_4_shape[0]*z_4_shape[1], -1)) theta_1_in = theta_1.fprop([z_4_in, s_in]) theta_2_in = theta_2.fprop([theta_1_in]) theta_3_in = theta_3.fprop([theta_2_in]) theta_4_in = theta_4.fprop([theta_3_in]) theta_mu_in = theta_mu.fprop([theta_4_in]) theta_sig_in = theta_sig.fprop([theta_4_in]) coeff_in = coeff.fprop([theta_4_in]) z_shape = phi_mu_t.shape phi_mu_in = phi_mu_t.reshape((z_shape[0]*z_shape[1], -1)) phi_sig_in = phi_sig_t.reshape((z_shape[0]*z_shape[1], -1)) prior_mu_in = prior_mu_t.reshape((z_shape[0]*z_shape[1], -1)) prior_sig_in = prior_sig_t.reshape((z_shape[0]*z_shape[1], -1)) kl_in = kl.fprop([phi_mu_in, phi_sig_in, prior_mu_in, prior_sig_in]) kl_t = kl_in.reshape((z_shape[0], z_shape[1])) recon = GMM(x_in, theta_mu_in, theta_sig_in, coeff_in) recon = recon.reshape((x_shape[0], x_shape[1])) recon = recon * x_mask kl_t = kl_t * x_mask recon_term = recon.sum(axis=0).mean() kl_term = kl_t.sum(axis=0).mean() nll_lower_bound = recon_term + kl_term nll_lower_bound.name = 'nll_lower_bound' recon_term.name = 'recon_term' kl_term.name = 'kl_term' kl_ratio = kl_term / T.abs_(recon_term) kl_ratio.name = 'kl_term proportion'
s_in = T.concatenate([s_0, s_t.reshape((s_shape[0]*s_shape[1], -1))], axis=0) z_4_shape = z_4_t.shape z_4_in = z_4_t.reshape((z_4_shape[0]*z_4_shape[1], -1)) theta_1_in = theta_1.fprop([z_4_in, s_in]) theta_2_in = theta_2.fprop([theta_1_in]) theta_3_in = theta_3.fprop([theta_2_in]) theta_4_in = theta_4.fprop([theta_3_in]) theta_mu_in = theta_mu.fprop([theta_4_in]) theta_sig_in = theta_sig.fprop([theta_4_in]) z_shape = phi_mu_t.shape phi_mu_in = phi_mu_t.reshape((z_shape[0]*z_shape[1], -1)) phi_sig_in = phi_sig_t.reshape((z_shape[0]*z_shape[1], -1)) prior_mu_in = prior_mu_t.reshape((z_shape[0]*z_shape[1], -1)) prior_sig_in = prior_sig_t.reshape((z_shape[0]*z_shape[1], -1)) kl_in = kl.fprop([phi_mu_in, phi_sig_in, prior_mu_in, prior_sig_in]) kl_t = kl_in.reshape((z_shape[0], z_shape[1])) recon = Gaussian(x_in, theta_mu_in, theta_sig_in) recon = recon.reshape((x_shape[0], x_shape[1])) recon_term = recon.mean() kl_term = kl_t.mean() nll_lower_bound = recon_term + kl_term nll_lower_bound.name = 'nll_lower_bound' mn_x_shape = mn_x.shape mn_x_in = mn_x.reshape((mn_x_shape[0]*mn_x_shape[1], -1)) mn_x_1_in = x_1.fprop([mn_x_in]) mn_x_2_in = x_2.fprop([mn_x_1_in]) mn_x_3_in = x_3.fprop([mn_x_2_in]) mn_x_4_in = x_4.fprop([mn_x_3_in])