def call_gan_training(generator, adversary): gan_model = VanillaGAN( generator=generator, adversary=adversary, z_dim=z_dim, x_dim=im_dim, folder="./veganModels/GAN", ) # gan_model.summary(save=True) gan_model.fit( X_train=X_train, X_test=X_test, batch_size=batch_size, epochs=epochs, steps={"Adversary": 5}, print_every="0.5e", save_model_every=None, save_images_every="0.5e", save_losses_every=1, enable_tensorboard=True, ) samples, losses = gan_model.get_training_results(by_epoch=False) utils.plot_images(images=samples.reshape(-1, *samples.shape[2:]), show=False) utils.plot_losses(losses=losses, show=True)
def _save_losses_plot(self): """ Creates the `losses.png` plot in the `self.folder` path. """ if hasattr(self, "logged_losses"): fig, axs = plot_losses(self.logged_losses, show=False, share=False) plt.savefig(os.path.join(self.folder, "losses.png")) plt.close()
gan_model.summary(save=True) gan_model.fit(X_train=X_train, y_train=y_train, X_test=X_test, y_test=y_test, batch_size=batch_size, epochs=epochs, steps=None, print_every="0.2e", save_model_every=None, save_images_every="0.2e", save_losses_every=10, enable_tensorboard=False) samples, losses = gan_model.get_training_results(by_epoch=False) training_time = np.round(gan_model.total_training_time / 60, 2) title = "Epochs: {}, z_dim: {}, Time trained: {} minutes\nParams: {}\n\n".format( epochs, z_dim, training_time, gan_model.get_number_params()) fixed_labels = np.argmax(gan_model.get_fixed_labels(), axis=1) fig, axs = utils.plot_images(images=samples.reshape(-1, 32, 32), labels=fixed_labels, show=False) fig.suptitle(title, fontsize=12) fig.tight_layout() plt.savefig(gan_model.folder + "/generated_images.png") fig, axs = utils.plot_losses(losses=losses, show=False) fig.suptitle(title, fontsize=12) fig.tight_layout() plt.savefig(gan_model.folder + "/losses.png") # gan_model.save()
discriminator = loader.load_adversary(x_dim=x_dim, y_dim=None) gan = VanillaGAN(generator=generator, adversary=discriminator, z_dim=z_dim, x_dim=x_dim, folder=None) gan.summary() # optional, shows architecture # Training gan.fit(X_train[:300], enable_tensorboard=False) # Vizualise results images, losses = gan.get_training_results() utils.plot_images(images) utils.plot_losses(losses) # Sample new images, you can also pass a specific noise vector samples = gan.generate(n=36) utils.plot_images(samples) elif mode == "supervised": import torch import numpy as np import vegans.utils as utils import vegans.utils.loading as loading from vegans.GAN import ConditionalVanillaGAN # Data preparation (Load your own data or example MNIST) loader = loading.MNISTLoader() X_train, y_train, X_test, y_test = loader.load()