Exemple #1
0
def main():
    parser = argparse.ArgumentParser(description='PyTorch MNIST Example')
    parser.add_argument('--batch_size', '-bs',
                        type=int, default=64)
    parser.add_argument('--nb_epoch', '-e',
                        type=int, default=100)
    parser.add_argument('--save_steps', '-ss',
                        type=int, default=10)
    parser.add_argument('--lr_d',
                        type=float, default=2e-4)
    parser.add_argument('--lr_g',
                        type=float, default=2e-4)
    parser.add_argument('--ngf', '-ngf',
                        type=int, default=64)
    parser.add_argument('--ndf', '-ndf',
                        type=int, default=64)
    parser.add_argument('--latent_dim', '-ld',
                        type=int, default=128)
    parser.add_argument('--logdir',
                        type=str, default='logs')
    parser.add_argument('--no-cuda',
                        dest='use_cuda',
                        action='store_false', default=True,
                        help='disables CUDA training')
    args = parser.parse_args()

    device = torch.device("cuda" if args.use_cuda else "cpu")
    kwargs = {'num_workers': 1, 'pin_memory': True} if args.use_cuda else {}
    train_loader = torch.utils.data.DataLoader(
        datasets.MNIST('./data', train=True, download=True,
                       transform=transforms.Compose([
                           transforms.Resize(32),
                           transforms.ToTensor(),
                           transforms.Lambda(lambda x: (x-0.5)*2),
                       ])),
        batch_size=args.batch_size,
        shuffle=True,
        **kwargs)

    generator = Generator(args.latent_dim, args.ngf)
    discriminator = Discriminator(args.ndf)
    gan = DCGAN(generator, discriminator, device)
    gan.init_params()

    if args.use_cuda:
        generator.cuda() 
        discriminator.cuda()
                   
    gan.fit(train_loader,
            nb_epoch=args.nb_epoch,
            lr_d=args.lr_d,
            lr_g=args.lr_g,
            save_steps=args.save_steps,
            logdir=args.logdir)
import argparse

parser = argparse.ArgumentParser(description='Main script')

parser.add_argument('--data_dir', type=str, default='C:/Users/Jonas/Documents/GitHub/pokemon-generation/data/sprites')

parser.add_argument('--name', type=str, default='gan')
parser.add_argument('--type', type=str, default='dcgan', help='GAN Type')

parser.add_argument('--spectral_norm', action='store_true')

parser.add_argument('--epochs', type=int, default=1000)
parser.add_argument('--batch_size', type=int, default=64)
parser.add_argument('--sample_interval', type=int, default=5)

parser.add_argument('--label_column', type=str, default='type_1')

args = parser.parse_args()

from dcgan import DCGAN
from acgan import ACGAN

config = {'spectral_norm': args.spectral_norm}

if args.type == 'dcgan':
    model = DCGAN(name=args.name, config=config)
elif args.type == 'acgan':
    model = ACGAN(name=args.name, label_column=args.label_column, config=config)

model.fit(args.data_dir, args.epochs, args.batch_size, args.sample_interval)