def check_dc_generator(): """Checks the output and number of parameters of the DCGenerator class. """ state = torch.load('/home/love_you/Documents/Study/deep_learning/a4-code/a4-code-v2-updated/checker_files/dc_generator.pt') # print(state['state_dict'].keys()) G = DCGenerator(noise_size=100, conv_dim=32) # for name, param in G.named_parameters(): # print(name) # summary(G, input_size=(100, 1, 1)) G.load_state_dict(state['state_dict']) noise = state['input'] dc_generator_expected = state['output'] output = G(noise) output_np = output.data.cpu().numpy() if np.allclose(output_np, dc_generator_expected): print('DCGenerator output: EQUAL') else: print('DCGenerator output: NOT EQUAL') num_params = count_parameters(G) expected_params = 370624 print('DCGenerator #params = {}, expected #params = {}, {}'.format( num_params, expected_params, 'EQUAL' if num_params == expected_params else 'NOT EQUAL')) print('-' * 80)
def check_dc_generator(): """Checks the output and number of parameters of the DCGenerator class. """ state = torch.load('checker_files/dc_generator.pt') G = DCGenerator(noise_size=100, conv_dim=32) G.load_state_dict(state['state_dict']) noise = state['input'] dc_generator_expected = state['output'] output = G(noise) output_np = output.data.cpu().numpy() if np.allclose(output_np, dc_generator_expected): print('DCGenerator output: EQUAL') else: print('DCGenerator output: NOT EQUAL') num_params = count_parameters(G) expected_params = 370624 print('DCGenerator #params = {}, expected #params = {}, {}'.format( num_params, expected_params, 'EQUAL' if num_params == expected_params else 'NOT EQUAL')) print('-' * 80)
def create_model(opts): """Builds the generators and discriminators. """ G = DCGenerator(noise_size=opts.noise_size, conv_dim=opts.conv_dim) D = DCDiscriminator(conv_dim=opts.conv_dim) print_models(G, D) if torch.cuda.is_available(): G.cuda() D.cuda() print('Models moved to GPU.') return G, D
def create_model(opts): """Builds the generators and discriminators. """ G = DCGenerator(noise_size=opts.noise_size, conv_dim=opts.conv_dim) D = DCDiscriminator(conv_dim=opts.conv_dim) return G, D
def main(): args = parse_args() # Housekeeping torch.manual_seed(0) device = torch.device("cuda" if args.device=="cuda" else "cpu") # change to args train_loader_kwargs = {'num_workers': 1, 'pin_memory': True} if args.device=="cuda" else {}# change to args # Load dataset train_loader = torch.utils.data.DataLoader( datasets.MNIST('../data', train=True, download=True, transform=transforms.ToTensor()), batch_size=args.batch_size, shuffle=True, **train_loader_kwargs ) # Arguments for both models n_colours = args.n_colours n_classes = args.n_classes input_size = args.input_size # Generator arguments latent_size = args.latent_size ngf = args.n_generator_filters # Discriminator arguments ndf = args.n_discriminator_filters # Define generator and discriminator if args.model_type == "dcgan": generator_network = DCGenerator(latent_size, ngf, n_colours) discriminator_network = DCDiscriminator(ndf, n_colours) elif args.model_type == "conditional": generator_network = ConditionalGenerator(latent_size, n_classes, input_size) discriminator_network = ConditionalDiscriminator(n_classes, input_size) print('Generator: ', generator_network) print('Discriminator: ', discriminator_network) # Fixed noise that will be used to examine generator output in saved images if args.model_type == "dcgan": fixed_noise = torch.randn(args.batch_size, latent_size, 1, 1) elif args.model_type == "conditional": fixed_noise = torch.randn(args.batch_size, latent_size) train_kwargs = { "n_epochs": args.epochs, "latent_size": latent_size, "learning_rate": args.learning_rate, "fixed_noise": fixed_noise, "model_type": args.model_type, "n_classes": n_classes } train(generator_network, discriminator_network, train_loader, **train_kwargs)
def check_dc_generator(): """Checks the output and number of parameters of the DCGenerator class. """ set_random_seeds(RANDOM_SEED) G = DCGenerator(noise_size=100, conv_dim=32) noise = sample_noise(100) output = G(noise) output_np = output.data.cpu().numpy() dc_generator_expected = np.load('checker_files/dc_generator.npy') if np.allclose(output_np, dc_generator_expected): print('DCGenerator output: EQUAL') else: print('DCGenerator output: NOT EQUAL') num_params = count_parameters(G) expected_params = 370624 print('DCGenerator #params = {}, expected #params = {}, {}'.format( num_params, expected_params, 'EQUAL' if num_params == expected_params else 'NOT EQUAL')) print('-' * 80)
def create_model(opts): """Builds the generators and discriminators. """ if opts.GAN_type == 'LSGAN': G = DCGenerator(noise_size=opts.noise_size, conv_dim=opts.conv_dim) D = DCDiscriminator(conv_dim=opts.conv_dim, batch_norm=not opts.disable_bn) elif opts.GAN_type == 'WGAN': G = WGANGenerator(noise_size=opts.noise_size, conv_dim=opts.conv_dim) D = WGANDiscriminator(conv_dim=opts.conv_dim, batch_norm=not opts.disable_bn) elif opts.GAN_type == 'WGANGP': G = WGANGPGenerator(noise_size=opts.noise_size, conv_dim=opts.conv_dim) D = WGANGPDiscriminator(conv_dim=opts.conv_dim) #print_models(G, D) #move to device G.to(opts.device) # in-place D.to(opts.device) # in-place print_models(G, D) print('Models are at:'+str(opts.device)) return G, D