prog.add_loss_critic(loss_critic.data.cpu().numpy()[0]) dis_optim.zero_grad() loss_critic.backward() dis_optim.step() prog.add_loss_dis() z = sampler.sample_z(config['dim_z'], batchsize, gaussian=config['gaussian']) z = Variable(torch.from_numpy(z).cuda()) samples_fake = gen_net(z) samples_fake /= config['scale'] f_fake = dis_net(samples_fake) loss_gen = -f_fake.mean() prog.add_loss_gen(loss_gen.data.cpu().numpy()[0]) gen_optim.zero_grad() loss_gen.backward() gen_optim.step() if (i + 1) % config['num_plot'] == 0: print(i + 1) z = sampler.sample_z(config['dim_z'], 10000, gaussian=config['gaussian']) z = Variable(torch.from_numpy(z).cuda()) samples_fake = gen_net(z).data.cpu().numpy() plot.plot_scatter(samples_fake, filename='{}_scatter'.format(i + 1), show=True)
dis_optim.zero_grad() loss_critic.backward() dis_optim.step() dis_net.clip() prog.add_loss_dis() z = sampler.sample_z(config['dim_z'], batchsize, gaussian=config['gaussian']) z = Variable(torch.from_numpy(z)) samples_fake = gen_net(z) samples_fake /= config['scale'] f_fake = dis_net(samples_fake) loss_gen = -f_fake.mean() prog.add_loss_gen(loss_gen) gen_optim.zero_grad() loss_gen.backward() gen_optim.step() if (i + 1) % config['num_plot'] == 0: print(i + 1) z = sampler.sample_z(config['dim_z'], 10000, gaussian=config['gaussian']) z = Variable(torch.from_numpy(z)) samples_fake = gen_net(z).data.numpy() plot.plot_scatter(samples_fake, dir='plot', filename='{}_scatter'.format(i + 1))
f_fake = dis_net(samples_fake) loss_critic = f_fake.mean() - f_true.mean() + \ (config['lda']*diff).mean() prog.add_loss_critic(cpu(loss_critic.data).numpy()[0]) dis_optim.zero_grad() loss_critic.backward() dis_optim.step() prog.add_loss_dis() z = sampler.sample_z(batchsize,config['dim_z']) z = Variable(cuda(torch.from_numpy(z))) samples_fake = gen_net(z) f_fake = dis_net(samples_fake) loss_gen = -f_fake.mean() prog.add_loss_gen(cpu(loss_gen.data).numpy()[0]) gen_optim.zero_grad() loss_gen.backward() gen_optim.step() if (i+1)%config['num_plot'] == 0: print(i+1,prog.duration()) z = sampler.sample_z(500,config['dim_z']) z = Variable(cuda(torch.from_numpy(z))) samples_fake = cpu(gen_net(z).data).numpy() plot.plot_corr(samples_fake,dir='plot', filename='{}_corr'.format(i+1),show=False) plot.plot_scatter(sampler.mat[:,:200].T,samples_fake[:200,:], dir='plot',filename='{}_scatter'.format(i+1),show=False) prog.start()