) for i, (imgs, Labels) in enumerate(dataloader_FULL_te): data_all_te = imgs label_all_te = Labels # Repeat experiments K times (K = 10) and report average test power (rejection rate) for kk in range(K): torch.manual_seed(kk * 19 + N1) torch.cuda.manual_seed(kk * 19 + N1) np.random.seed(seed=1102 * (kk + 10) + N1) # Initialize deep networks for MMD-D (called featurizer), C2ST-S and C2ST-L (called discriminator) featurizer = Featurizer() discriminator = Discriminator() # Initialize parameters epsilonOPT = torch.log( MatConvert(np.random.rand(1) * 10**(-10), device, dtype)) epsilonOPT.requires_grad = True sigmaOPT = MatConvert(np.ones(1) * np.sqrt(2 * 32 * 32), device, dtype) sigmaOPT.requires_grad = True sigma0OPT = MatConvert(np.ones(1) * np.sqrt(0.005), device, dtype) sigma0OPT.requires_grad = True print(epsilonOPT.item()) if cuda: featurizer.cuda() discriminator.cuda() adversarial_loss.cuda() # Collect real MNIST images np.random.seed(seed=819 * (kk + 9) + N1) train_data = [] ind_M_all = np.arange(4000)
d0 = trans(data_T_tensor[i]) data_trans[i] = TT(d0) Ind_v4_all = np.arange(len(data_T)) # Repeat experiments K times (K = 10) and report average test power (rejection rate) for kk in range(K): print(kk) torch.manual_seed(kk * 19 + N1) torch.cuda.manual_seed(kk * 19 + N1) np.random.seed(seed=1102 * (kk + 10) + N1) # Initialize deep networks for MMD-D featurizer = Featurizer() discriminator = Discriminator() # Initialize parameters epsilonOPT = torch.log( MatConvert(np.random.rand(1) * 10**(-10), device, dtype)) epsilonOPT.requires_grad = True sigmaOPT = MatConvert(np.ones(1) * np.sqrt(2 * 32 * 32), device, dtype) sigmaOPT.requires_grad = True sigma0OPT = MatConvert(np.ones(1) * np.sqrt(0.005), device, dtype) sigma0OPT.requires_grad = True TT_org = MatConvert(np.random.randn(J, 3, 64, 64), device, dtype) TT_org.requires_grad = True print(epsilonOPT.item()) if cuda: featurizer.cuda() discriminator.cuda() adversarial_loss.cuda() # Collect CIFAR10 images Ind_tr = np.random.choice(len(data_all), N1, replace=False)
torch.cuda.manual_seed(kk * 19 + n) # Generate HDGM-D for i in range(Num_clusters): np.random.seed(seed=1102*kk + i + n) s1[n * (i):n * (i + 1), :] = np.random.multivariate_normal(mu_mx[i], sigma_mx_1, n) for i in range(Num_clusters): np.random.seed(seed=819*kk + 1 + i + n) s2[n * (i):n * (i + 1), :] = np.random.multivariate_normal(mu_mx[i], sigma_mx_2[i], n) # REPLACE above line with # s2[n * (i):n * (i + 1), :] = np.random.multivariate_normal(mu_mx[i], sigma_mx_1, n) # for validating type-I error (s1 ans s2 are from the same distribution) if kk==0: s1_o = s1 s2_o = s2 S = np.concatenate((s1, s2), axis=0) S = MatConvert(S, device, dtype) N1 = Num_clusters*n N2 = Num_clusters*n # Train C2ST-S y = (torch.cat((torch.zeros(N1, 1), torch.ones(N2, 1)), 0)).squeeze(1).to(device, dtype).long() pred, STAT_C2ST_S, model_C2ST_S, w_C2ST_S, b_C2ST_S = C2ST_NN_fit(S, y, N1, x_in, H, x_out, 0.001, N_epoch_C, batch_size, device, dtype) # Train C2ST-L np.random.seed(seed=819*kk + 1 + i + n) y = (torch.cat((torch.zeros(N1, 1), torch.ones(N2, 1)), 0)).squeeze(1).to(device, dtype).long() pred, STAT_C2ST_L, model_C2ST_L, w_C2ST_L, b_C2ST_L = C2ST_NN_fit(S, y, N1, x_in, H, x_out, 0.001, N_epoch_C, batch_size, device, dtype) # Train MMD-O np.random.seed(seed=1102)
for i in range(Num_clusters): np.random.seed(seed=1102 * kk + i + n) s1[n * (i):n * (i + 1), :] = np.random.multivariate_normal( mu_mx[i], sigma_mx_1, n) for i in range(Num_clusters): np.random.seed(seed=819 * kk + 1 + i + n) s2[n * (i):n * (i + 1), :] = np.random.multivariate_normal( mu_mx[i], sigma_mx_2[i], n) # REPLACE above line with # s2[n * (i):n * (i + 1), :] = np.random.multivariate_normal(mu_mx[i], sigma_mx_1, n) # for validating type-I error (s1 ans s2 are from the same distribution) if kk == 0: s1_o = s1 s2_o = s2 S = np.concatenate((s1, s2), axis=0) S = MatConvert(S, device, dtype) N1 = Num_clusters * n N2 = Num_clusters * n # Train deep networks for G+C and D+C y = (torch.cat((torch.zeros(N1, 1), torch.ones(N2, 1)), 0)).squeeze(1).to(device, dtype).long() pred, STAT_C2ST, model_C2ST, w_C2ST, b_C2ST = C2ST_NN_fit( S, y, N1, x_in, H, x_out, learning_rate_C2ST, N_epoch_C, batch_size, device, dtype) # Train G+J np.random.seed(seed=1102) torch.manual_seed(1102) torch.cuda.manual_seed(1102) for t in range(N_epoch): modelu1_output = model_u1(S)