###### Definition of variables ###### # Networks netG_A2B = Generator(opt.input_nc, opt.output_nc) netG_B2A = Generator(opt.output_nc, opt.input_nc) netD_A = Discriminator(opt.input_nc) netD_B = Discriminator(opt.output_nc) if opt.cuda: netG_A2B.cuda() netG_B2A.cuda() netD_A.cuda() netD_B.cuda() netG_A2B.apply(weights_init_normal) netG_B2A.apply(weights_init_normal) netD_A.apply(weights_init_normal) netD_B.apply(weights_init_normal) # Lossess criterion_GAN = torch.nn.MSELoss() criterion_cycle = torch.nn.L1Loss() criterion_identity = torch.nn.L1Loss() ## criterion_classification = torch.nn.BCELoss() # Optimizers & LR schedulers optimizer_G = torch.optim.Adam(itertools.chain(netG_A2B.parameters(), netG_B2A.parameters()), lr=opt.lr, betas=(0.5, 0.999))
device = torch.device("cuda:0" if opt.cuda else "cpu") ngpu = int(opt.ngpu) nz = int(opt.nz) ngf = int(opt.ngf) ndf = int(opt.ndf) generator = Generator(nz, nc, ngf, opt.imageSize, ngpu).to(device) generator.apply(weights_init) if opt.generator != "": generator.load_state_dict(torch.load(opt.generator)) print(generator) discriminator = Discriminator(nc, ndf, opt.imageSize, ngpu).to(device) discriminator.apply(weights_init) if opt.discriminator != "": discriminator.load_state_dict(torch.load(opt.discriminator)) print(discriminator) # setup optimizer optimizerD = optim.Adam( discriminator.parameters(), lr=opt.lr_d, betas=(opt.beta1, 0.999) ) optimizerG = optim.Adam(generator.parameters(), lr=opt.lr_g, betas=(opt.beta1, 0.999)) fixed_noise = ( torch.from_numpy(truncated_noise_sample(batch_size=64, dim_z=nz, truncation=0.4)) .view(64, nz, 1, 1) .to(device) )