Ejemplo n.º 1
0
                    options = option_loader.from_json_and_command_line(json_path)
                    options.restore = True
                elif choice == 'n':
                    options.restore = True
                elif choice == 'a':
                    sys.exit(2)
                else:
                    options.restore = False
    option_loader.save_as_json(options)

    if options.seed is not None:
        torch.random.manual_seed(options.seed)

    data = Data.from_options(options)
    generator = Generator.from_options(options)
    discriminator = Discriminator.from_options(options)
    loss = Loss.from_options(options, discriminator)
    noise = Noise.from_options(options)
    hooks = Hook.from_options(options)
    statistics = Statistics.from_options(options)
    snapshot = Snapshot.from_options(options)
    evaluation = Evaluation.from_options(options)
    game = Game.from_options(options, generator, discriminator, loss, hooks)

    for _ in range(options.epochs):
        losses = game.run_epoch(data, noise)
        statistics.log(losses)
        snapshot.save(data, noise, generator)
        if evaluation.has_improved(losses):
            torch.save(generator.state_dict(), os.path.join(options.model_dir, options.experiment, 'generator.pt'))
            torch.save(discriminator.state_dict(), os.path.join(options.model_dir, options.experiment, 'discriminator.pt'))