Example #1
0
parser.add_argument('--k',         type=int, default=500,   help="Number mixture components in MoG prior")
parser.add_argument('--iter_max',  type=int, default=20000, help="Number of training iterations")
parser.add_argument('--iter_save', type=int, default=10000, help="Save model every n iterations")
parser.add_argument('--run',       type=int, default=0,     help="Run ID. In case you want to run replicates")
args = parser.parse_args()
layout = [
    ('model={:s}',  'gmvae'),
    ('z={:02d}',  args.z),
    ('k={:03d}',  args.k),
    ('run={:04d}', args.run)
]
model_name = '_'.join([t.format(v) for (t, v) in layout])
pprint(vars(args))
print('Model name:', model_name)

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
train_loader, labeled_subset, _ = ut.get_mnist_data(device, use_test_subset=True)
gmvae = GMVAE(z_dim=args.z, k=args.k, name=model_name).to(device)

ut.load_model_by_name(gmvae, global_step=args.iter_max)
ut.evaluate_lower_bound(gmvae, labeled_subset, run_iwae=False)
samples = torch.reshape(gmvae.sample_x(200), (10, 20, 28, 28))

f, axarr = plt.subplots(10,20)

for i in range(samples.shape[0]):
    for j in range(samples.shape[1]):
        axarr[i,j].imshow(samples[i,j].detach().numpy())
        axarr[i,j].axis('off')

plt.show() 
Example #2
0
    ('model={:s}',  'vae'),
    ('z={:02d}',  args.z),
    ('run={:04d}', args.run)
]
model_name = '_'.join([t.format(v) for (t, v) in layout])
pprint(vars(args))
print('Model name:', model_name)

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
train_loader, labeled_subset, _ = ut.get_mnist_data(device, use_test_subset=True)
vae = VAE(z_dim=args.z, name=model_name).to(device)

if args.train:
    writer = ut.prepare_writer(model_name, overwrite_existing=True)
    train(model=vae,
          train_loader=train_loader,
          labeled_subset=labeled_subset,
          device=device,
          tqdm=tqdm.tqdm,
          writer=writer,
          iter_max=args.iter_max,
          iter_save=args.iter_save)
    ut.evaluate_lower_bound(vae, labeled_subset, run_iwae=args.train == 2)
    x = vae.sample_x(100).view(100, 1, 28, 28)
    db.printTensor(x)
    ImUtil.showBatch(x, show=True)
    input('Press key to exit')
else:
    ut.load_model_by_name(vae, global_step=args.iter_max)
    ut.evaluate_lower_bound(vae, labeled_subset, run_iwae=True)
Example #3
0
parser.add_argument('--train', type=int, default=1, help="Flag for training")
args = parser.parse_args()
layout = [('model={:s}', 'gvae'), ('x-dim={:03d}', args.x_dim),
          ('z-dim={:02d}', args.z_dim), ('z-num={:02d}', args.z_num),
          ('run={:04d}', args.run)]
model_name = '_'.join([t.format(v) for (t, v) in layout])
pprint(vars(args))
print('Model name:', model_name)

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
train_loader, labeled_subset, _ = ut.get_mnist_data(device,
                                                    use_test_subset=True)
gvae = GVAE(x_dim=args.x_dim,
            z_dim=args.z_dim,
            z_num=args.z_num,
            name=model_name).to(device)

if args.train:
    writer = ut.prepare_writer(model_name, overwrite_existing=True)
    train(model=gvae,
          train_loader=train_loader,
          labeled_subset=labeled_subset,
          device=device,
          tqdm=tqdm.tqdm,
          writer=writer,
          iter_max=args.iter_max,
          iter_save=args.iter_save)
    ut.evaluate_lower_bound(gvae, labeled_subset)
else:
    ut.load_model_by_name(gvae, global_step=args.iter_max)
    ut.evaluate_lower_bound(gvae, labeled_subset)
Example #4
0
              z_dim=args.z,
              k=args.k,
              name=model_name).to(device)

if args.train:
    writer = ut.prepare_writer(model_name, overwrite_existing=True)
    train(model=gmvae,
          train_loader=train_loader,
          labeled_subset=None,
          device=device,
          tqdm=tqdm.tqdm,
          writer=writer,
          iter_max=args.iter_max,
          iter_save=args.iter_save)
    ut.evaluate_lower_bound(gmvae,
                            None,
                            run_iwae=args.train == 2,
                            ox=torch.tensor(testgen))
    evaluate(model=gmvae,
             test_loader=test_loader,
             labeled_subset=None,
             device=device,
             tqdm=tqdm.tqdm,
             iter_max=len(testgen),
             iter_save=args.iter_save,
             samples=testsamples,
             meta=meta,
             group_by=color_by,
             group_on=group_on)

else:
    #writer = ut.prepare_writer(model_name, overwrite_existing=True)
Example #5
0
          device=device,
          tqdm=tqdm.tqdm,
          writer=writer,
          lr=args.lr,
          lr_gamma=args.lr_gamma,
          lr_milestones=lr_milestones,
          iw=args.iw,
          iter_max=args.iter_max,
          iter_save=args.iter_save)
    model.set_to_eval()
    val_set = ut.get_load_data(device,
                               split='val',
                               in_memory=True,
                               log_normal=True,
                               shift_scale=shift_scale)
    ut.evaluate_lower_bound(model, val_set, run_iwae=(args.iw > 1))
else:
    ut.load_model_by_name(model, global_step=args.iter_max)

if args.mode in ['val', 'test']:
    model.set_to_eval()
    val_set = ut.get_load_data(device,
                               split=args.mode,
                               in_memory=True,
                               log_normal=True,
                               shift_scale=shift_scale)
    ut.evaluate_lower_bound(model, val_set, run_iwae=(args.iw > 1))

make_image_load(model, log_normal=True, shift_scale=shift_scale["use"])
make_image_load_z(model, log_normal=True, shift_scale=shift_scale["use"])