Пример #1
0
def main(config):
    # For fast training.
    cudnn.benchmark = True
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

    # running preparation
    prepareDirs(config)
    writer = SummaryWriter(config.log_dir)
    # Data preparation
    data_loader = getProperLoader(config)

    # Model Initialization
    G = Generator(config.g_conv_dim, config.c_dim, config.g_repeat_num)
    D = Discriminator(config.image_size, config.d_conv_dim, config.c_dim,
                      config.d_repeat_num)
    g_optimizer = torch.optim.Adam(G.parameters(), config.g_lr,
                                   [config.beta1, config.beta2])
    d_optimizer = torch.optim.Adam(D.parameters(), config.d_lr,
                                   [config.beta1, config.beta2])
    G.to(device)
    D.to(device)

    # Training/Test
    if config.mode == 'train':
        train(config, G, D, g_optimizer, d_optimizer, data_loader, device,
              writer)
    elif config.mode == 'test':
        test(config, G, data_loader, device)
Пример #2
0
        netD.load_state_dict(netD.state_dict())
        opt.start_training_step, opt.start_epoch = which_trainingstep_epoch(
            opt.resume)

else:
    model = Net()
    netD = Discriminator()
    mkdir_steptraing()

# model = torch.load('models/1/GFN_epoch_1.pkl')
# model.load_state_dict(model.state_dict())
# netD = torch.load('models/1/GFN_D_epoch_1.pkl')
# netD.load_state_dict(netD.state_dict())

model = model.to(device)
netD = netD.to(device)
criterion = torch.nn.MSELoss(size_average=True)
criterion = criterion.to(device)
cri_perception = VGGFeatureExtractor().to(device)
cri_gan = GANLoss('vanilla', 1.0, 0.0).to(device)

# textual init
vgg19 = cri_perception.vggNet
loss_layer = [1, 6, 11, 20]
loss_fns = [GramMSELoss()] * len(loss_layer)
if torch.cuda.is_available():
    loss_fns = [loss_fn.cuda() for loss_fn in loss_fns]
style_weights = [1e3 / n**2 for n in [64, 128, 256, 512]]

optimizer = torch.optim.RMSprop(
    filter(lambda p: p.requires_grad, model.parameters()), 0.0001)