z_vec = np.zeros((M,d)) r_vec = np.zeros((M,d)) v_vec = np.zeros((M,d)) h_vec = np.zeros((M,d)) if train_weights == True: Wz, Uz, bz = update.extract_W_weights(Wz_mu_prior, d, ud) Wr, Ur, br = update.extract_W_weights(Wr_mu_prior, d, ud) Wp, Up, bp = update.extract_W_weights(Wp_mu_prior, d, ud) for i in range(0,M): h = h0 for t in range(0,T_check): z, r, v, h, y = gen.stoch_GRU_step(np.diag(1/inv_var), h, u[t,:,0], Wz, Uz, bz.reshape(d), Wr, Ur, br.reshape(d), Wp, Up, bp.reshape(d), 0, 0) z_vec[i,:] = z r_vec[i,:] = r v_vec[i,:] = v h_vec[i,:] = h #plt.plot(x, mix_pdf, 'r', label='pdf') plt.hist(h_samples_vec[:,d_check].reshape(N-N_burn-1), bins=100, density=True) plt.hist(h_vec[:,d_check], bins=100, histtype='step',color='r', density=True, label='prior') plt.xlabel('h_t') plt.ylabel('P(h_t|h_{t-1})') plt.title('Gen: T={}, T_check={}, d_check={}, N={}, Var={}'.format(
Wpy, Upy, bpy = update.extract_W_weights(Wp_bar_true, d, ud) Wyy, _, byy = update.extract_W_weights(Wy_bar_true, d, 0) #Wyy, _, byy = update.extract_W_weights(Wy_mu_prior, d, 0) ''' Wzy, Uzy, bzy = update.extract_W_weights(Wz_mu_prior, d, ud) Wry, Ury, bry = update.extract_W_weights(Wr_mu_prior, d, ud) Wpy, Upy, bpy = update.extract_W_weights(Wp_mu_prior, d, ud) Wyy, _, byy = update.extract_W_weights(Wy_mu_prior, d, 0) ''' for i in range(0, M): h = h0 for t in range(0, T): z, r, v, h, y = gen.stoch_GRU_step(np.diag(1 / inv_var), h, u[t, :, 0], Wzy, Uzy, bzy.reshape(d), Wry, Ury, bry.reshape(d), Wpy, Upy, bpy.reshape(d), Sigma_y, Wyy, byy.reshape(yd)) y_vec[t, :, 0] += y y = y_vec / M ############################################### #Initialize h h = np.zeros((T + 1, d, 1)) h[0, :, 0] = h0 Er = np.zeros((T, d, 1)) Ez = np.zeros((T, d, 1)) for i in range(1, T + 1): #TESTING
Wz_bar, Wz, Uz, bz, Wz_mu_prior = update.init_weights(L, U, Sigma_theta, d, ud) Wr_bar, Wr, Ur, br, Wr_mu_prior = update.init_weights(L, U, Sigma_theta, d, ud) Wp_bar, Wp, Up, bp, Wp_mu_prior = update.init_weights(L, U, Sigma_theta, d, ud) Wy_bar, Wy, _, by, Wy_mu_prior = update.init_weights(L, U, Sigma_y_theta, d, 0) train_weights = True #Initialize h h = np.zeros((T + 1, d, 1)) h[0, :, 0] = h0 r = np.zeros((T, d, 1)) z = np.zeros((T, d, 1)) for j in range(0, T): zt, rt, _, ht, _ = gen.stoch_GRU_step(np.diag(1 / inv_var), h0, u[j, :, 0], Wz, Uz, bz.reshape(d), Wr, Ur, br.reshape(d), Wp, Up, bp.reshape(d), Sigma_y, Wy, by.reshape(yd)) r[j, :, 0] = rt z[j, :, 0] = zt h[j + 1, :, 0] = ht rh = np.zeros((T + 1, d, 1)) #Loop parameters N = 10000 M = 1000 #number of test samples N_burn = int(.4 * N) T_check = -1 d_check = 0 h_samples, z_samples, r_samples, v_samples, Wz_bar_samples, Wr_bar_samples, Wp_bar_samples, Wy_bar_samples, h_samples_vec, Wz_bar_samples_vec, Wr_bar_samples_vec, Wp_bar_samples_vec, Wy_bar_samples_vec = loop.gibbs_loop(