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'))