def draw_interpolation(generator, num_steps): cuda = True if torch.cuda.is_available() else False if cuda: generator.cuda() Tensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor p1 = np.random.normal(0, 1, opt.latent_dim) p2 = np.random.normal(0, 1, opt.latent_dim) batch = get_interpolation(num_steps, p1, p2) batch = Variable(Tensor(batch).transpose_(0, 1)) ecgs_fake_varied = generator(batch).detach().cpu().numpy() some_num = random.randint(0, 1111) save_ecgs_varied_one_plot(ecgs_fake_varied, "INTERPOL" + str(some_num)) save_ecgs_varied_several_plots(ecgs_fake_varied, "INTERPOL" + str(some_num))
def get_same_class_codei_vary(self, class_id, code_i, steps): # батч длиной steps # класс фиксирован # переменная ci (i-тая по счету среди непрерывных) пробегает диапазон # остальные c равны нулю z = np.random.normal(0, 1, (steps, self.latent_dim)) label = to_categorical(np.array([class_id]), self.n_classes) labels_one_hot = np.repeat(label, steps, axis=0) p1 = np.array([0 for _ in range(self.code_dim)]) p1[code_i] = -1 p2 = np.array([0 for _ in range(self.code_dim)]) p2[code_i] = 1 code_input = get_interpolation(steps, p1, p2) code_input = code_input.transpose((1, 0)) return z, code_input, labels_one_hot