#samples = einet.sample(num_samples=25).cpu().numpy() #samples = samples.reshape((-1, 28, 28)) # irfft2 by @yu samples = einet.sample(num_samples=25) samples = samples.reshape((-1, 28, 30)) samples = samples[:, :, :15] + samples[:, :, 15:] * 1j # filtering high freqs samples[:, :, 10:] = 0 samples[:, 10:20, :] = 0 samples = torch.fft.irfft2(samples, norm="forward").cpu().numpy() samples[samples > 0.5] = 0.5 samples[samples < -0.5] = -0.5 utils.save_image_stack(samples, 5, 5, os.path.join(samples_dir, "samples.png"), margin_gray_val=0.) 0 / 0 # Draw conditional samples for reconstruction image_scope = np.array(range(height * width)).reshape(height, width) marginalize_idx = list(image_scope[0:round(height / 2), :].reshape(-1)) keep_idx = [i for i in range(width * height) if i not in marginalize_idx] einet.set_marginalization_idx(marginalize_idx) num_samples = 10 samples = None for k in range(num_samples): if samples is None: samples = einet.sample(x=test_x[0:25, :]).cpu().numpy() else:
p = p / p.sum() einets = [] for k in range(num_clusters): print("Load model for cluster {}".format(k)) model_file = os.path.join(einet_path, 'cluster_{}'.format(k), 'einet.mdl') einets.append(torch.load(model_file).to(device)) mixture = EinetMixture(p, einets) L = 7 samples = mixture.sample(L**2, std_correction=0.0) utils.save_image_stack(samples.reshape(-1, height, width, 3), L, L, os.path.join(sample_path, 'einet_samples.png'), margin=2, margin_gray_val=0., frame=2, frame_gray_val=0.0) print("Saved samples to {}".format( os.path.join(sample_path, 'einet_samples.png'))) num_reconstructions = 10 rp = np.random.permutation(test_x_all.shape[0]) test_x = test_x_all[rp[0:num_reconstructions], ...] # Make covered images -- Top test_x_covered_top = np.reshape(test_x.clone().cpu().numpy(), (num_reconstructions, height, width, 3)) test_x_covered_top[:, 0:round(height / 2), ...] = 0.0