def train_dense_latent_pong_no_batchnorm(beta): # inputs input_shape = (1, 84, 84) epochs = 10 batch_size = 1 filters = 32 kernel_size = 6 pre_latent_size = 128 latent_size = 32 # define filename name = 'cvae_atari_dense_latent_pong_no_batchnorm_beta_' + str(beta) # builder hyperparameter dictionary hp_dictionary = { 'epochs': epochs, 'batch_size': batch_size, 'beta': beta, 'filters': filters, 'kernel_size': kernel_size, 'loss': 'vae_loss', 'optimizer': 'adam' } # define log directory log_dir = './summaries/' + experiment + '/' + utils.build_hyperparameter_string(name, hp_dictionary) + '/' # make VAE vae = DenseLatentPongNoBatchNorm(input_shape, log_dir, filters=filters, kernel_size=kernel_size, pre_latent_size=pre_latent_size, latent_size=latent_size, beta=beta) # compile VAE from keras import optimizers optimizer = optimizers.Adam(lr=1e-3) vae.compile(optimizer=optimizer) # get dataset train_directory = './atari_agents/record/train/' test_directory = './atari_agents/record/test/' train_generator = utils.atari_generator(train_directory, batch_size=batch_size) test_generator = utils.atari_generator(test_directory, batch_size=batch_size) train_size = utils.count_images(train_directory) test_size = utils.count_images(test_directory) # print summaries vae.print_model_summaries() # fit VAE steps_per_epoch = int(train_size / batch_size) validation_steps = int(test_size / batch_size) vae.fit_generator(train_generator, epochs=epochs, steps_per_epoch=steps_per_epoch, validation_data=test_generator, validation_steps=validation_steps)
def train_entangled_pong_network(): # inputs input_shape = (1, 84, 84) filters = 32 kernel_size = 6 beta = 1.0 # entangled latent space epochs = 10 batch_size = 1 # define filename name = 'cvae_atari_entangled_pong' # builder hyperparameter dictionary hp_dictionary = { 'epochs': epochs, 'batch_size': batch_size, 'beta': beta, 'filters': filters, 'kernel_size': kernel_size, 'loss': 'vae_loss', 'optimizer': 'adam' } # define log directory log_dir = './summaries/' + experiment + '/' + utils.build_hyperparameter_string( name, hp_dictionary) + '/' # make VAE vae = PongEntangledConvolutionalLatentVAE(input_shape, log_dir, filters=filters, kernel_size=kernel_size, beta=beta) # compile VAE from keras import optimizers optimizer = optimizers.Adam(lr=1e-1) vae.compile(optimizer=optimizer) # get dataset train_directory = './atari_agents/record/train/' test_directory = './atari_agents/record/test/' train_generator = utils.atari_generator(train_directory, batch_size=batch_size) test_generator = utils.atari_generator(test_directory, batch_size=batch_size) train_size = utils.count_images(train_directory) test_size = utils.count_images(test_directory) # print summaries vae.print_model_summaries() # fit VAE steps_per_epoch = int(train_size / batch_size) validation_steps = int(test_size / batch_size) vae.fit_generator(train_generator, epochs=epochs, steps_per_epoch=steps_per_epoch, validation_data=test_generator, validation_steps=validation_steps)
def main(): # inputs input_shape = (1, 84, 84) filters = 32 kernel_size = 6 epochs = 20 batch_size = 1 # log directory run = 'cvae_atari_space_invaders_no_batch_norm_18_May_20_33_10_batch_size_1_beta_8_epochs_10_filters_32_kernel_size_6_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # define model vae = PongEntangledConvolutionalLatentNoBatchNormVAE( input_shape, log_dir, filters=filters, kernel_size=kernel_size) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1) X_test_size = 1000 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction sampling.encode_decode_sample(X_test, model)
def main(): # inputs input_shape = (1, 84, 84) epochs = 10 batch_size = 1 filters = 32 kernel_size = 6 pre_latent_size = 512 latent_size = 32 # log directory run = 'cvae_atari_dense_latent_pong_no_batchnorm_beta_2_16_May_00_19_59_batch_size_1_beta_2_epochs_10_filters_32_kernel_size_6_loss_vae_loss_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = DenseLatentPongNoBatchNorm(input_shape, log_dir, filters=filters, kernel_size=kernel_size, pre_latent_size=pre_latent_size, latent_size=latent_size) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1) X_test_size = 100 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction sampling.encode_decode_sample(X_test, model) # plot filters # sampling.show_convolutional_layers(X_test, encoder, 8, 8) # sample from prior # sampling.decode_prior_samples(5, decoder, latent_shape=(1, 32)) # sample from posterior # num_iter = 100 # sampling.sample_posterior(X_test, model, num_iter, show_every=1) latent_shape = (1, latent_size) latent_index = 30 sampling.change_latent_variable(latent_shape, latent_index, decoder)
def main(): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 6 epochs = 10 batch_size = 1 lr = 1e-4 img_channels = 1 beta = 1.0 # log directory run = 'cvae_atari_average_filter_18_Jun_20_23_05_batch_size_1_beta_1_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' # run = 'cvae_atari_average_filter_18_Jun_22_25_44_batch_size_1_beta_2_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' # run = 'cvae_atari_average_filter_19_Jun_00_24_43_batch_size_1_beta_4_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = IndiscriminateDecoupling(input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, img_channels=img_channels, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1, shuffle=False) X_test_size = 1000 X_test = np.asarray([next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction # for sample_number in range(4): # sampling.encode_decode_sample(X_test, model, sample_number=sample_number, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/indiscriminate_decoupling/', base='beta_4_') # plt.show() # plot filters # sampling.show_convolutional_layers(X_test, encoder, 2, 4, init_sample_num=3, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/indiscriminate_decoupling/', base='beta_4_') # plt.show() # sample from prior sampling.decode_prior_samples(5, decoder, latent_shape=(1, 8, 8, 8), save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/indiscriminate_decoupling/', base='beta_1_')
def main(): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 6 epochs = 10 batch_size = 1 lr = 1e-4 beta = 1.0 # log directory run = 'cvae_atari_28_May_16_14_52_batch_size_1_beta_1_epochs_12_filters_32_kernel_size_7_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = ConvolutionalLatentAverageFilterShallowVAE( input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1, shuffle=False) X_test_size = 330 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction sampling.encode_decode_sample(X_test, model) plt.show()
def main(): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 6 epochs = 10 batch_size = 1 lr = 1e-4 img_channels = 1 beta = 1.0 # log directory run = 'weighted_average_filter_19_Jun_04_15_36_batch_size_1_beta_1_epochs_10_filters_32_img_channels_3_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = WeightedAverageFilters(input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, img_channels=img_channels, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1) X_test_size = 1000 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction sampling.encode_decode_sample(X_test, model) plt.show()
def main(): # inputs input_shape = (1, 84, 84) epochs = 10 batch_size = 1 beta = 1.0 filters = 32 kernel_size = 6 pre_latent_size = 512 latent_size = 32 # log directory experiment = 'experiment_optimal_network_dense_latent_pong' run = 'cvae_atari_dense_latent_pong_reconstruction_only_15_May_15_50_14_batch_size_1_beta_0.0_epochs_20_filters_32_kernel_size_6_loss_vae_loss_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # define model vae = DenseLatentPong(input_shape, log_dir, filters=filters, kernel_size=kernel_size, pre_latent_size=pre_latent_size, latent_size=latent_size, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1) X_test_size = 100 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction sampling.encode_decode_sample(X_test, model)
def train_average_filter(beta): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 7 epochs = 12 batch_size = 1 lr = 1e-4 # define filename name = 'cvae_atari' # builder hyperparameter dictionary hp_dictionary = { 'epochs': epochs, 'batch_size': batch_size, 'beta': beta, 'filters': filters, 'latent_filters': latent_filters, 'kernel_size': kernel_size, 'lr': lr, 'loss': 'vae_loss', 'optimizer': 'adam' } # define log directory log_dir = './summaries/' + experiment + '/' + utils.build_hyperparameter_string( name, hp_dictionary) + '/' # make VAE vae = ConvolutionalLatentAverageFilterShallowVAE( input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, beta=beta) # compile VAE from keras import optimizers optimizer = optimizers.Adam(lr=lr) vae.compile(optimizer=optimizer) # get dataset train_directory = './atari_agents/record/train/' test_directory = './atari_agents/record/test/' train_generator = utils.atari_generator(train_directory, batch_size=batch_size) test_generator = utils.atari_generator(test_directory, batch_size=batch_size) train_size = utils.count_images(train_directory) test_size = utils.count_images(test_directory) # print summaries vae.print_model_summaries() # fit VAE steps_per_epoch = int(train_size / batch_size) validation_steps = int(test_size / batch_size) vae.fit_generator(train_generator, epochs=epochs, steps_per_epoch=steps_per_epoch, validation_data=test_generator, validation_steps=validation_steps)
def main(): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 6 epochs = 10 batch_size = 1 lr = 1e-4 img_channels = 1 beta = 1.0 # log directory # run = 'cvae_atari_average_filter_18_Jun_15_40_50_batch_size_1_beta_1_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' # run = 'cvae_atari_average_filter_18_Jun_18_07_12_batch_size_1_beta_2_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' run = 'cvae_atari_average_filter_18_Jun_20_33_08_batch_size_1_beta_4_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = ConvolutionalLatentAverageFilterShallowVAE(input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, img_channels=img_channels, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1, shuffle=False) X_test_size = 1000 X_test = np.asarray([next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction # for sample_number in range(4): # sampling.encode_decode_sample(X_test, model, sample_number=sample_number, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/naive_average/', base='beta_4_') # plot filters # sampling.show_convolutional_layers(X_test, encoder, 2, 4, init_sample_num=3, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/naive_average/', base='beta_4_') # plt.show() # sample from prior # sampling.decode_prior_samples(5, decoder, latent_shape=(1, 8, 8, 8), save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/naive_average/', base='beta_4_') # plt.show() # sample from posterior # num_iter = 100 # sampling.sample_posterior(X_test, model, num_iter, show_every=1, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/naive_average/', base='beta_4_') # change latent variable # latent_shape = (1, 8, 8, 8) # filter_index = 0 # sampling.change_latent_filter(X_test, # latent_shape, # filter_index, # encoder, # decoder, # num_samples=10, # init_sample_num=0, # noise_factor=1.0, # std_dev=1.0, # mean=0.0) # plot mean activation over latent space sampling.plot_mean_latent_activation(X_test, encoder, 2, 4, threshold=True, threshold_val=0.1) plt.subplots_adjust(left=0.14, bottom=0.63, right=0.5, top=1, wspace=0.14, hspace=0) plt.savefig('/home/dane/Documents/Thesis/thesis/figures/results/naive_average/' + 'beta_4_' + 'average_activation' + '.png', bbox_inches='tight')
def main(): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 6 epochs = 10 batch_size = 1 lr = 1e-4 img_channels = 1 beta = 1.0 # log directory run = 'cvae_atari_average_filter_19_Jun_05_05_40_batch_size_1_beta_4_epochs_10_filters_32_img_channels_1_kernel_size_6_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = LatentImage(input_shape, log_dir, filters=filters, kernel_size=kernel_size, img_channels=img_channels, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1, shuffle=False) X_test_size = 1000 X_test = np.asarray([next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction for sample_number in range(4): sampling.encode_decode_sample(X_test, model, sample_number=sample_number, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/latent_image/', base='beta_4_') # plt.show() # plot filters # for sample_number in [30, 70, 10, 90]: # plt.figure(1) # plt.xticks([], []) # plt.yticks([], []) # plt.imshow(X_test[sample_number][0]) # plt.gray() # plt.savefig('/home/dane/Documents/Thesis/thesis/figures/results/latent_image/beta_' + str(int(beta)) + '_sample_' + str(sample_number) + '_original.png', bbox_inches='tight') # # plt.show() # x_encoded = encoder.predict(np.asarray([X_test[sample_number]])) # shape (1, num_filters, width, height) # x_encoded = x_encoded[0] # shape (num_filters, width, height) # plt.figure(2) # plt.xticks([], []) # plt.yticks([], []) # plt.imshow(x_encoded[0]) # plt.gray() # plt.savefig('/home/dane/Documents/Thesis/thesis/figures/results/latent_image/beta_' + str(int(beta)) + '_sample_' + str(sample_number) + '_latent.png', bbox_inches='tight') # plt.show() # sample from prior # sampling.decode_prior_samples(4, decoder, latent_shape=(1, 1, 8, 8), save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/latent_image/', base='beta_1_') # plt.show() # sample from posterior # num_iter = 1000 # sampling.sample_posterior(X_test, model, num_iter, show_every=1, save=True, save_path='/home/dane/Documents/Thesis/thesis/figures/results/latent_image/', base='beta_1_') # change latent variable # latent_shape = (1, 8, 8, 8) # filter_index = 0 # sampling.change_latent_filter(X_test, # latent_shape, # filter_index, # encoder, # decoder, # num_samples=10, # init_sample_num=0, # noise_factor=1.0, # std_dev=1.0, # mean=0.0) # plot mean activation over latent space sampling.plot_mean_latent_activation(X_test, encoder, 1, 1) plt.savefig('/home/dane/Documents/Thesis/thesis/figures/results/latent_image/' + 'beta_1_' + 'average_activation' + '.png', bbox_inches='tight')
vae = FreyVAE((1, 28, 20), log_dir) # load weights encoder = vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() ''' Load data ''' dataset = 'frey' if dataset == 'atari': test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1) X_test_size = 100 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) elif dataset == 'mnist': # import dataset (_, _), (X_test, _) = utils.load_keras() elif dataset == 'frey': # import dataset (_, _), (X_test, _) = utils.load_frey() else: print("Dataset not found.") ''' Sampling functions '''
def train_winner_takes_all(beta): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 6 epochs = 5 batch_size = 1 lr = 1e-4 img_channels = 1 # define filename name = 'cvae_atari_winner_takes_all' # builder hyperparameter dictionary hp_dictionary = { 'epochs': epochs, 'batch_size': batch_size, 'beta': beta, 'filters': filters, 'latent_filters': latent_filters, 'kernel_size': kernel_size, 'img_channels': img_channels, 'lr': lr, 'loss': 'vae_loss', 'optimizer': 'adam' } # define log directory log_dir = '/vol/bitbucket/dgs13/summaries/' + experiment + '/' + utils.build_hyperparameter_string( name, hp_dictionary) + '/' # make VAE vae = WinnerTakesAll(input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, img_channels=img_channels, beta=beta) # compile VAE from keras import optimizers optimizer = optimizers.Adam(lr=lr) vae.compile(optimizer=optimizer) # get dataset train_directory = '/vol/bitbucket/dgs13/record/train/' test_directory = '/vol/bitbucket/dgs13/record/test/' train_generator = utils.atari_generator(train_directory, batch_size=batch_size, img_channels=img_channels) test_generator = utils.atari_generator(test_directory, batch_size=batch_size, img_channels=img_channels) train_size = utils.count_images(train_directory) test_size = utils.count_images(test_directory) # print summaries vae.print_model_summaries() # fit VAE steps_per_epoch = int(train_size / batch_size) validation_steps = int(test_size / batch_size) vae.fit_generator(train_generator, epochs=epochs, steps_per_epoch=steps_per_epoch, validation_data=test_generator, validation_steps=validation_steps)
def main(): # inputs input_shape = (1, 84, 84) filters = 32 latent_filters = 8 kernel_size = 7 epochs = 10 batch_size = 1 lr = 1e-4 beta = 1.0 # log directory run = 'cvae_atari_average_filter_30_May_20_46_38_batch_size_1_beta_128_epochs_5_filters_32_kernel_size_7_latent_filters_8_loss_vae_loss_lr_0.0001_optimizer_adam' log_dir = './summaries/' + experiment + '/' + run + '/' # make VAE vae = ConvolutionalLatentAverageFilterShallowVAE( input_shape, log_dir, filters=filters, latent_filters=latent_filters, kernel_size=kernel_size, beta=beta) # load weights vae.load_model() # extract models model = vae.get_model() decoder = vae.get_decoder() encoder = vae.get_encoder() # load testing data test_directory = './atari_agents/record/test/' test_generator = utils.atari_generator(test_directory, batch_size=1, shuffle=False) X_test_size = 1113 X_test = np.asarray( [next(test_generator)[0][0] for i in range(X_test_size)]) # show original and reconstruction # sampling.encode_decode_sample(X_test, model) # plt.show() # plot filters # sampling.show_convolutional_layers(X_test, encoder, 4, 2, threshold=True, threshold_val=0.0) # plt.show() # sample from prior # sampling.decode_prior_samples(5, decoder, latent_shape=(1, 8, 7, 7)) # plt.show() # sample from posterior # num_iter = 100 # sampling.sample_posterior(X_test, model, num_iter, show_every=1) # change latent variable # latent_shape = (1, 8, 7, 7) # filter_index = 1 # sampling.change_latent_filter(X_test, # latent_shape, # filter_index, # encoder, # decoder, # num_samples=10, # init_sample_num=0, # noise_factor=1.0, # std_dev=1.0, # mean=0.0) # plot mean activation over latent space sampling.plot_mean_latent_activation(X_test, encoder, 4, 2, threshold=True, threshold_val=0.0) plt.show()