def normalize_datasets(datasets): datasets[0], mean, std, _ = normalize(datasets[0], remove_constant=False) datasets[1], _, _, _ = normalize(datasets[1], mean, std, remove_constant=False) datasets[2], _, _, _ = normalize(datasets[2], mean, std, remove_constant=False) if zshot: datasets[3], _, _, _ = normalize(datasets[3], mean, std, remove_constant=False) return datasets
if len(data.shape) > 2: shape = reduce(mul, data.shape[1:], 1) data = data.reshape([-1, shape]) return data data = load_data() # Get training data n_train = int(len(data) * train_fract) data = data[:n_train] #reuse var to save memory if gaps: gap_ids = np.load(os.path.join(data_dir, 'gap_ids.npy')) data = np.delete(data, gap_ids, 0) # Fit model to normalized training data data, m, s, fs = normalize(data) rng = np.random.RandomState(123) model = PCA(n_components=n_components, random_state=rng) model.fit(data) # Encode all (normalized) data data = load_data() data, _, _, _ = normalize(data, m, s, fs) data = model.transform(data) # codes, reuse var expl_var = np.array(np.sum(model.explained_variance_ratio_)) # Save results codes_dir = os.path.join(data_dir, 'codes/') f_name = os.path.join(codes_dir, "pca_{0}_{1}v".format(gaps, n_components)) np.savez_compressed(f_name, codes=data, expl_var=expl_var) print("PCA values saved to {1}.".format(f_name))
def main(): causal = False if causal: config_files = [ "VAEConv2D_v2_CausalDsprite_ber_shape2_scale5_ld2", "VAEConv2D_v2_CausalDsprite_ber_shape2_scale5_ld3", "VAEConv2D_v2_CausalDsprite_ber_shape2_scale5_ld4", "VAEConv2D_v2_CausalDsprite_ber_shape2_scale5_ld6", "VAEConv2D_v2_CausalDsprite_ber_shape2_scale5_ld10" ] model_names = ["C-ld-2", "C-ld-3", "C-ld-4", "C-ld-6", "C-ld-10"] #checkpoint_files=["vae_checkpoint"+ str(i) + ".pth" for i in range(50)] checkpoint_files = ["vae_lastCheckpoint.pth"] dataset_zip = np.load( 'datasets/dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz') print('Keys in the dataset:', dataset_zip.keys()) imgs = dataset_zip['imgs'] #get the idxs data_sets = [] data_sets_true = [] d_sprite_idx, X_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=10000, seed=12345, constant_factor=[0, 0], causal=causal, color=0, shape=2, scale=5) X_true_data = np.array(X_true_data)[:, :2] #add a random g dimesnoion? #r_gen_data=[] #for r in range(len(X_true_data)): # r_gen_data.append(random.uniform(0, 1)) #X_true_data=np.array(X_true_data) #r_gen_data=np.array(r_gen_data) #print(X_true_data.shape) #print(r_gen_data.shape) #X_true_data=np.c_[ X_true_data, r_gen_data] X_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) print(len(X_data)) X_data_t = X_data[8500:] X_data = X_data[:8500] X_true_data_t = X_true_data[8500:] X_true_data = X_true_data[:8500] if not causal: # the custem girls dataset #config_files=["VAE_NonCausalDsprite_ber_shape2_scale5_ld2","VAE_NonCausalDsprite_ber_shape2_scale5_ld3","VAE_NonCausalDsprite_ber_shape2_scale5_ld4" #,"VAE_NonCausalDsprite_ber_shape2_scale5_ld6","VAE_NonCausalDsprite_ber_shape2_scale5_ld10"] #model_names=["NC_ds_ld2","NC_ds_ld3","NC_ds_ld4","NC_ds_ld6","NC_ds_ld10",] config_files = [ "VAEConv2D_v2_NonCausalDsprite_ber_shape2_scale5_ld2", "VAEConv2D_v2_NonCausalDsprite_ber_shape2_scale5_ld3", "VAEConv2D_v2_NonCausalDsprite_ber_shape2_scale5_ld4", "VAEConv2D_v2_NonCausalDsprite_ber_shape2_scale5_ld6", "VAEConv2D_v2_NonCausalDsprite_ber_shape2_scale5_ld10" ] model_names = ["NC-ld-2", "NC-ld-3", "NC-ld-4", "NC-ld-6", "NC-ld-10"] #checkpoint_files=["vae_checkpoint"+ str(i) + ".pth" for i in range(50)] checkpoint_files = ["vae_lastCheckpoint.pth"] dataset_zip = np.load( 'datasets/dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz') print('Keys in the dataset:', dataset_zip.keys()) imgs = dataset_zip['imgs'] #get the idxs data_sets = [] data_sets_true = [] d_sprite_idx, X_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=20000, seed=12345, constant_factor=[0, 0, 0], causal=causal, color=0, shape=2, scale=5) d_sprite_idx_t, X_true_data_t, _ = caus_utils.calc_dsprite_idxs( num_samples=1500, seed=54321, constant_factor=[0, 0, 0], causal=causal, color=0, shape=2, scale=5) X_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) X_data_t = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx_t, img_size=256) #split in train and test X_data_train = np.array(X_data) X_data_test = np.array(X_data_t) X_true_data_train, _, _, _ = normalize(np.array(X_true_data), remove_constant=False) X_true_data_test, _, _, _ = normalize(np.array(X_true_data_t), remove_constant=False) #swap to see #X_data_train[:,[0, 2]] = X_data_train[:,[2, 0]] #X_data_test[:,[0, 2]] = X_data_test[:,[2, 0]] #X_true_data_train[:,[0, 1]] = X_true_data_train[:,[1, 0]] #X_true_data_test[:,[0, 1]] = X_true_data_test[:,[1, 0]] zs_train_all = [] zs_test_all = [] for config_file in config_files: for checkpoint_file in checkpoint_files: print("obtaining representations (zs)") print(config_file) print(checkpoint_file) zs_train = obtain_representation(X_data_train, config_file, checkpoint_file) #plt.hist(zs_train, bins='auto') #plt.show() print(config_file) print("mean: " + str(np.mean(zs_train, axis=0))) print("std: " + str(np.std(zs_train, axis=0))) print("min: " + str(np.min(zs_train, axis=0))) print("max: " + str(np.max(zs_train, axis=0))) zs_test = obtain_representation(X_data_test, config_file, checkpoint_file) zs_train_n, _, _, _ = normalize(zs_train, remove_constant=False) zs_test_n, _, _, _ = normalize(zs_test, remove_constant=False) zs_train_all.append(zs_train_n) zs_test_all.append(zs_test_n) lasso(z_encodes_train=zs_train_all, z_encodes_test=zs_test_all, gt_labels_train=X_true_data_train, gt_labels_test=X_true_data_test, model_names=model_names) #random_forest(z_encodes_train=zs_train_all,z_encodes_test=zs_test_all,gt_labels_train=X_true_data_train,gt_labels_test=X_true_data_test,model_names=model_names) print("DONZO!")
def main(): causal = False nn = MLPRegressor(hidden_layer_sizes=(10, ), activation='relu', solver='adam', alpha=0.001, batch_size='auto', learning_rate='constant', learning_rate_init=0.01, power_t=0.5, max_iter=1000, shuffle=True, random_state=9, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08) if causal: config_file = "VAEConv2D_v2_CausalDsprite_ber_shape2_scale5_ld3" model_name = "C-ld-3" #checkpoint_files=["vae_checkpoint"+ str(i) + ".pth" for i in range(50)] checkpoint_file = "vae_lastCheckpoint.pth" dataset_zip = np.load( 'datasets/dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz') print('Keys in the dataset:', dataset_zip.keys()) imgs = dataset_zip['imgs'] #get the idxs data_sets = [] data_sets_true = [] #find corrsbonding axes X z_x = -1 d_sprite_idx, X_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=1000, seed=7, constant_factor=[1, 0], causal=causal, color=0, shape=2, scale=5) X_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_train = obtain_representation(X_data, config_file, checkpoint_file) zs_train = np.array(zs_train) zs_std = np.std(zs_train, axis=0) z_x_idx = np.argmin(zs_std) print("X-CONSTANT: ") print(zs_std) #find corrsbonding axes X z_y = -1 d_sprite_idx, Y_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=1000, seed=7, constant_factor=[0, 1], causal=causal, color=0, shape=2, scale=5) Y_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_train = obtain_representation(Y_data, config_file, checkpoint_file) zs_train = np.array(zs_train) zs_std = np.std(zs_train, axis=0) z_y_idx = np.argmin(zs_std) print("Y-CONSTANT: ") print(zs_std) if z_y_idx == z_x_idx: print("z_y: " + str(z_y_idx)) print("z_x: " + str(z_x_idx)) print("Fatal error! could not get unique g to z") a = 1 / 0 #time to learn some causal relationships!!!! d_sprite_idx, true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=10000, seed=12345, constant_factor=[0, 0], causal=causal, color=0, shape=2, scale=5) data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_data = obtain_representation(data, config_file, checkpoint_file) #normalize data true_data_norm, _, _, _ = normalize(np.array(true_data), remove_constant=False) zs_data_norm, _, _, _ = normalize(np.array(zs_data), remove_constant=False) #train input predictor: input_x_y = true_data_norm[:, :2] input_o = np.array(true_data_norm[:, 2]) n = nn.fit(input_x_y[:8500], input_o[:8500]) test = nn.predict(input_x_y[8500:]) input_mse = np.sum(np.square(test - input_o[8500:])) print("causal input mse: " + str(input_mse)) #train latent predictor: z_x_y = np.array([zs_data_norm[:, z_x_idx], zs_data_norm[:, z_y_idx]]).T z_o_idx_t = [0, 1, 2] z_o_idx = -1 for i in range(len(z_o_idx_t)): if not z_o_idx_t[i] == z_y_idx and not z_o_idx_t[i] == z_x_idx: z_o_idx = z_o_idx_t[i] z_o = zs_data_norm[:, z_o_idx] n = nn.fit(z_x_y[:8500], z_o[:8500]) test = nn.predict(z_x_y[8500:]) z_mse = np.sum(np.square(test - z_o[8500:])) print("causal latent mse: " + str(z_mse)) if not causal: config_file = "VAEConv2D_v2_NonCausalDsprite_ber_shape2_scale5_ld3" model_name = "NC-ld-3" #checkpoint_files=["vae_checkpoint"+ str(i) + ".pth" for i in range(50)] checkpoint_file = "vae_lastCheckpoint.pth" dataset_zip = np.load( 'datasets/dsprites_ndarray_co1sh3sc6or40x32y32_64x64.npz') print('Keys in the dataset:', dataset_zip.keys()) imgs = dataset_zip['imgs'] #get the idxs data_sets = [] data_sets_true = [] #find corrsbonding axes X z_x = -1 d_sprite_idx, X_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=1000, seed=7, constant_factor=[1, 0, 0], causal=causal, color=0, shape=2, scale=5) X_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_train = obtain_representation(X_data, config_file, checkpoint_file) zs_train = np.array(zs_train) zs_std = np.std(zs_train, axis=0) z_x_idx = np.argmin(zs_std) print("X-CONSTANT: ") print(zs_std) #find corrsbonding axes X z_y = -1 d_sprite_idx, Y_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=1000, seed=7, constant_factor=[0, 1, 0], causal=causal, color=0, shape=2, scale=5) Y_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_train = obtain_representation(Y_data, config_file, checkpoint_file) zs_train = np.array(zs_train) zs_std = np.std(zs_train, axis=0) z_y_idx = np.argmin(zs_std) print("Y-CONSTANT: ") print(zs_std) #find corrsbonding axes O z_y = -1 d_sprite_idx, O_true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=1000, seed=7, constant_factor=[0, 0, 1], causal=causal, color=0, shape=2, scale=5) O_data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_train = obtain_representation(O_data, config_file, checkpoint_file) zs_train = np.array(zs_train) zs_std = np.std(zs_train, axis=0) z_o_idx = np.argmin(zs_std) print("O-CONSTANT: ") print(zs_std) if z_y_idx == z_x_idx or z_y_idx == z_o_idx or z_o_idx == z_x_idx: print("z_y: " + str(z_y_idx)) print("z_x: " + str(z_x_idx)) print("z_o: " + str(z_o_idx)) print("Fatal error! could not get unique g to z") a = 1 / 0 #time to learn some causal relationships!!!! d_sprite_idx, true_data, _ = caus_utils.calc_dsprite_idxs( num_samples=10000, seed=12345, constant_factor=[0, 0, 0], causal=causal, color=0, shape=2, scale=5) data = caus_utils.make_dataset_d_sprite(d_sprite_dataset=imgs, dsprite_idx=d_sprite_idx, img_size=256) zs_data = obtain_representation(data, config_file, checkpoint_file) #normalize data true_data_norm, _, _, _ = normalize(np.array(true_data), remove_constant=False) zs_data_norm, _, _, _ = normalize(np.array(zs_data), remove_constant=False) #train input predictor: input_x_y = true_data_norm[:, :2] input_o = np.array(true_data_norm[:, 2]) n = nn.fit(input_x_y[:8500], input_o[:8500]) test = nn.predict(input_x_y[8500:]) input_mse = np.sum(np.square(test - input_o[8500:])) print("Non-causal input mse: " + str(input_mse)) #train latent predictor: z_x_y = np.array([zs_data_norm[:, z_x_idx], zs_data_norm[:, z_y_idx]]).T z_o = zs_data_norm[:, z_o_idx] n = nn.fit(z_x_y[:8500], z_o[:8500]) test = nn.predict(z_x_y[8500:]) z_mse = np.sum(np.square(test - z_o[8500:])) print("Non-causal latent mse: " + str(z_mse))