Esempio n. 1
0
def test(model_path, model):
  device = torch.device('cpu')
  model = Flow(in_channel, 64, n_block, n_flows, img_sz, num_scales)
  checkpoint = torch.load(model_path, map_location=device)
  model.load_state_dict(checkpoint)
  z_sample = torch.randn((16, 3, 32, 32), dtype=torch.float32)
  x = model.reverse(z_sample)
  x = torch.sigmoid(x)
  show(x[0].permute(1, 2, 0).detach().cpu(), "test", 0)
Esempio n. 2
0
        optimizer.zero_grad()
        x = x.to(device)
        # show(x[0].detach().permute(1, 2, 0), os.path.join(root, "input/1.png"), 0)
        z, sldj = model(x)
        # x = model.reverse(z)
        # show(x[0].detach().permute(1, 2, 0), os.path.join(root, "input/1.png"), 0)
        loss = loss_fn(z, sldj)
        loss.backward()
        grad_clipping(optimizer)
        optimizer.step()
        if loss.item() < old_loss:
          is_best = 1
          save_checkpoint(model.state_dict(), is_best, root, f"./models/checkpoint.pth.tar")
          old_loss = loss
        print(f"loss at batch {b} epoch {epoch}: {loss.item()}")
        if b == 0: #len(train_loader) - 1:
          z_sample = torch.randn((16, 3, 32, 32), dtype=torch.float32).to(device)
          model.eval()
          if use_cuda:
            x = model.module.reverse(z_sample)
          else:
            x = model.reverse(z_sample)
          images = torch.sigmoid(x)
          images_concat = utils.make_grid(images, nrow=int(16 ** 0.5), padding=2, pad_value=255)
          utils.save_image(images_concat, os.path.join(root, f"./samples/{epoch}_{b}_{str((torch.round(loss * 10**3)/10**3).item())}.png"))
          # show(x.squeeze().detach().cpu(), os.path.join(root, f"./samples/{epoch}_{b}_{str((torch.round(loss * 10**3)/10**3).item())}.png"), 1)
          # show(x.squeeze().permute(1, 2, 0).detach().cpu(), os.path.join(root, f"./samples/{epoch}_{b}_{str((torch.round(loss * 10**3)/10**3).item())}.png"), 1)
    best_loss = old_loss
    print(f"Best loss at {best_loss}")