Exemplo n.º 1
0
    def __init__(self, params):
        self.params = params
        self.tune_dir = "{}/{}-{}/{}".format(params.exp_id, params.src_lang,
                                             params.tgt_lang,
                                             params.norm_embeddings)
        self.tune_best_dir = "{}/best".format(self.tune_dir)
        self.tune_export_dir = "{}/export".format(self.tune_dir)
        if self.params.eval_file == 'wiki':
            self.eval_file = '../data/bilingual_dicts/{}-{}.5000-6500.txt'.format(
                self.params.src_lang, self.params.tgt_lang)
            self.eval_file2 = '../data/bilingual_dicts/{}-{}.5000-6500.txt'.format(
                self.params.tgt_lang, self.params.src_lang)
        elif self.params.eval_file == 'wacky':
            self.eval_file = '../data/bilingual_dicts/{}-{}.test.txt'.format(
                self.params.src_lang, self.params.tgt_lang)
            self.eval_file2 = '../data/bilingual_dicts/{}-{}.test.txt'.format(
                self.params.tgt_lang, self.params.src_lang)
        else:
            print('Invalid eval file!')
        # self.seed = random.randint(0, 1000)
        # self.seed = 41
        # self.initialize_exp(self.seed)

        self.X_AE = AE(params)
        self.Y_AE = AE(params)
        self.D_X = Discriminator(input_size=params.d_input_size,
                                 hidden_size=params.d_hidden_size,
                                 output_size=params.d_output_size)
        self.D_Y = Discriminator(input_size=params.d_input_size,
                                 hidden_size=params.d_hidden_size,
                                 output_size=params.d_output_size)

        self.nets = [self.X_AE, self.Y_AE, self.D_X, self.D_Y]
        self.loss_fn = torch.nn.BCELoss()
        self.loss_fn2 = torch.nn.CosineSimilarity(dim=1, eps=1e-6)
Exemplo n.º 2
0
def main():
    # Get command line arguments
    args = get_args()

    # Create the model
    ae = AE()

    # Load the trained model weights
    load_dir = './save'
    checkpoint_path = os.path.join(load_dir, str(args.epoch) + '.tar')
    if os.path.isfile(checkpoint_path):
        print('Loading checkpoint')
        checkpoint = torch.load(checkpoint_path)
        model_epoch = checkpoint['epoch']
        ae.load_state_dict(checkpoint['state_dict'])
        print('Loaded checkpoint at {}'.format(model_epoch))
    else:
        print('Checkpoint {} not available'.format(args.epoch))

    # Evaluate
    for path in args.test_images:
        img, x = utils.load_test(path)
        print(img.shape, x.shape)
        start_time = time.clock()
        enc, dec = ae(x)
        end_time = time.clock()
        print('Tested in {} seconds'.format(end_time - start_time))
        dec = dec.view(60, 60).data.numpy()
        plt.subplot(121)
        plt.imshow(img, cmap='gray')
        plt.subplot(122)
        plt.imshow(dec, cmap='gray')
        plt.show()
Exemplo n.º 3
0
def main(_):
    if FLAGS.exp_name is None:
        FLAGS.exp_name = "reconstrued_results_unitLength" + str(
            int(FLAGS.latent_dim / FLAGS.latent_num))
    image_shape = [
        int(i) for i in FLAGS.image_shape.strip('()[]{}').split(',')
    ]
    dirs = init_directories(FLAGS.exp_name, FLAGS.output_dir)
    dirs['data'] = '../npz_datas' if FLAGS.data_dir is None else FLAGS.data_dir
    dirs['codes'] = os.path.join(dirs['data'], 'codes/')
    create_directories(dirs, FLAGS.train, FLAGS.save_codes)

    output_dim = reduce(mul, image_shape, 1)

    run_config = tf.ConfigProto(allow_soft_placement=True)
    run_config.gpu_options.allow_growth = True
    run_config.gpu_options.per_process_gpu_memory_fraction = 0.9
    sess = tf.Session(config=run_config)

    ae = AE(
        session=sess,
        arch=FLAGS.arch,
        lr=FLAGS.lr,
        alpha=FLAGS.alpha,
        beta=FLAGS.beta,
        latent_dim=FLAGS.latent_dim,
        latent_num=FLAGS.latent_num,
        class_net_unit_num=FLAGS.class_net_unit_num,
        output_dim=output_dim,
        batch_size=FLAGS.batch_size,
        image_shape=image_shape,
        exp_name=FLAGS.exp_name,
        dirs=dirs,
        vis_reconst=FLAGS.visualize_reconstruct,
    )

    if FLAGS.train:

        data1Name = 'SVHN10WithBg_img1_oneguided_N20000x32x32x3_train'

        data_manager = ShapesDataManager(
            dirs['data'],
            data1Name,
            FLAGS.batch_size,
            image_shape,
            shuffle=False,
            file_ext=FLAGS.file_ext,
            train_fract=0.8,
            inf=True,
            supervised=False)  # supervised=True for get label
        ae.train_iter1, ae.dev_iter1, ae.test_iter1 = data_manager.get_iterators(
        )

        n_iters_per_epoch = data_manager.n_train // data_manager.batch_size
        FLAGS.stats_interval = int(FLAGS.stats_interval * n_iters_per_epoch)
        FLAGS.ckpt_interval = int(FLAGS.ckpt_interval * n_iters_per_epoch)
        n_iters = int(FLAGS.epochs * n_iters_per_epoch)

        ae.train(n_iters, n_iters_per_epoch, FLAGS.stats_interval,
                 FLAGS.ckpt_interval)
Exemplo n.º 4
0
    def build_model(self):
        if self.args.model_type == 'AE':
            self.model = cc(AE(self.config))
        elif self.args.model_type == 'VQVAE':
            speaker_encoder = VoiceEncoder()
            self.model = cc(VQVAE(self.config, speaker_encoder))
        elif self.args.model_type == 'DAE':
            speaker_encoder = VoiceEncoder()
            self.model = cc(AE_D(self.config, speaker_encoder))
        elif self.args.model_type == 'AutoVC':
            speaker_encoder = VoiceEncoder()
            self.model = cc(AutoVC(32, 256, 512, 32, speaker_encoder))
        elif self.args.model_type == 'Prosody':
            speaker_encoder = VoiceEncoder()
            self.model = cc(VQVAE_Prosody(self.config, speaker_encoder))
        elif self.args.model_type == 'MBV':
            speaker_encoder = VoiceEncoder()
            self.model = cc(MBV(self.config, speaker_encoder))
        elif self.args.model_type == 'NORM':
            speaker_encoder = VoiceEncoder()
            self.model = cc(MultipleNorm(self.config, speaker_encoder))
        elif self.args.model_type == 'Attn':
            speaker_encoder = VoiceEncoder()
            self.model = cc(VQVAE_attn(self.config, speaker_encoder))

        self.model.eval()

        if self.args.use_wavenet:
            from wavenet import build_model
            self.vocoder = cc(build_model())

        return
Exemplo n.º 5
0
 def build_model(self):
     # create model, discriminator, optimizers
     self.model = cc(
         AE(c_in=self.config.c_in,
            c_h=self.config.c_h,
            c_latent=self.config.c_latent,
            c_cond=self.config.c_cond,
            c_out=self.config.c_in,
            kernel_size=self.config.kernel_size,
            bank_size=self.config.bank_size,
            bank_scale=self.config.bank_scale,
            s_enc_n_conv_blocks=self.config.s_enc_n_conv_blocks,
            s_enc_n_dense_blocks=self.config.s_enc_n_dense_blocks,
            d_enc_n_conv_blocks=self.config.d_enc_n_conv_blocks,
            d_enc_n_dense_blocks=self.config.d_enc_n_dense_blocks,
            s_subsample=self.config.s_subsample,
            d_subsample=self.config.d_subsample,
            dec_n_conv_blocks=self.config.dec_n_conv_blocks,
            dec_n_dense_blocks=self.config.dec_n_dense_blocks,
            upsample=self.config.upsample,
            act=self.config.act,
            dropout_rate=self.config.dropout_rate))
     print(self.model)
     self.model.eval()
     self.noise_adder = NoiseAdder(0, self.config.gaussian_std)
     return
Exemplo n.º 6
0
def main():

    device = torch.device("cuda:0" if args.cuda else "cpu")
    
    print(device)
    #model = VAE([128,128], lr=args.lr, eps=args.eps)
    model = AE([128,128])
    model_path = '/hdd_c/data/miniWorld/trained_models/AE/dataset_5/AE.pth'
    data_path = '/hdd_c/data/miniWorld/dataset_5/'
    all_obs = read_data(data_path, max_num_eps=3000)
    np.random.shuffle(all_obs)
    all_obs = np.swapaxes(all_obs,1,3)
    all_obs = all_obs/255.0
    print('Available number of obs: {}'.format(len(all_obs)))
    print(all_obs.shape)
    
        
    split_point = int(len(all_obs)*0.8)
    
    data_train = all_obs[:split_point]
    data_eval = all_obs[split_point:]

    #image = np.zeros([32,3,128,128])
    #image = make_var(image)
    #z = model.encode(image)
    #r = model.decode(z)
    #dummy_data = np.ones([6400,3,128,128])
    print(data_eval.shape)
    training_instance = trainAE(device, model, lr=args.lr, eps=args.eps, data_train=data_train, data_eval=data_eval, model_path=model_path)
    training_instance.train()
    
    #training_instance.eval(all_obs[-10:])
    save_model(training_instance.model, model_path)
Exemplo n.º 7
0
def main():

    # test(fc_model, test_loader)

    batch_size = 1 # plese note: For deep fool batch_size MUST be 1
    train_loader, test_loader = get_dataloader(batch_size)

    fc_model = FC_model()  # Base model, used for classification, also used for crafting adversarial samples
    defender = AE()  # Defender: input goes through this before going to the base model

    load_model(fc_model, './pretrained_models/fc_model.pth')
    load_model(defender, './pretrained_models/autoencoder_pretrained.pth')

    fc_model.to(device)
    defender.to(device)

    criterion = nn.CrossEntropyLoss()

    # craft adversarial examples for epsilon value in [0,1] at step size of 0.05
    '''
    acc_list= []
    for i in range(21):
        acc_list.append(adv_attack(fc_model, defender, test_loader, criterion, i*0.05))
    print(acc_list)
    '''
    # defender = None

    # FGSM attack
    adv_attack(fc_model, defender, test_loader, criterion, attack_type="fgsm")

    # deep fool attack
    adv_attack(fc_model, defender, test_loader, criterion, attack_type="deepfool")

    # universal attack
    adv_attack(fc_model, defender, test_loader, criterion, attack_type="universal")
Exemplo n.º 8
0
    def __init__(self, params):

        self.params = params
        self.tune_dir = "{}/{}-{}/{}".format(params.exp_id, params.src_lang,
                                             params.tgt_lang,
                                             params.norm_embeddings)
        self.tune_best_dir = "{}/best".format(self.tune_dir)

        self.X_AE = AE(params)
        self.Y_AE = AE(params)
        self.D_X = Discriminator(input_size=params.d_input_size,
                                 hidden_size=params.d_hidden_size,
                                 output_size=params.d_output_size)
        self.D_Y = Discriminator(input_size=params.d_input_size,
                                 hidden_size=params.d_hidden_size,
                                 output_size=params.d_output_size)

        self.nets = [self.X_AE, self.Y_AE, self.D_X, self.D_Y]
        self.loss_fn = torch.nn.BCELoss()
        self.loss_fn2 = torch.nn.CosineSimilarity(dim=1, eps=1e-6)
Exemplo n.º 9
0
    def build_model(self):
        # create model, discriminator, optimizers
        self.model = cc(
            AE(c_in=self.config.c_in,
               c_h=self.config.c_h,
               c_latent=self.config.c_latent,
               c_cond=self.config.c_cond,
               c_out=self.config.c_in,
               kernel_size=self.config.kernel_size,
               bank_size=self.config.bank_size,
               bank_scale=self.config.bank_scale,
               s_enc_n_conv_blocks=self.config.s_enc_n_conv_blocks,
               s_enc_n_dense_blocks=self.config.s_enc_n_dense_blocks,
               d_enc_n_conv_blocks=self.config.d_enc_n_conv_blocks,
               d_enc_n_dense_blocks=self.config.d_enc_n_dense_blocks,
               s_subsample=self.config.s_subsample,
               d_subsample=self.config.d_subsample,
               dec_n_conv_blocks=self.config.dec_n_conv_blocks,
               dec_n_dense_blocks=self.config.dec_n_dense_blocks,
               upsample=self.config.upsample,
               act=self.config.act,
               dropout_rate=self.config.dropout_rate))
        print(self.model)

        discr_input_size = self.config.segment_size / reduce(
            lambda x, y: x * y, self.config.d_subsample)
        self.discr = cc(
            LatentDiscriminator(input_size=discr_input_size,
                                output_size=1,
                                c_in=self.config.c_latent,
                                c_h=self.config.dis_c_h,
                                kernel_size=self.config.dis_kernel_size,
                                n_conv_layers=self.config.dis_n_conv_layers,
                                n_dense_layers=self.config.dis_n_dense_layers,
                                d_h=self.config.dis_d_h,
                                act=self.config.act,
                                dropout_rate=self.config.dis_dropout_rate))
        print(self.discr)
        self.gen_opt = torch.optim.Adam(self.model.parameters(),
                                        lr=self.config.gen_lr,
                                        betas=(self.config.beta1,
                                               self.config.beta2),
                                        amsgrad=self.config.amsgrad)
        self.dis_opt = torch.optim.Adam(self.discr.parameters(),
                                        lr=self.config.dis_lr,
                                        betas=(self.config.beta1,
                                               self.config.beta2),
                                        amsgrad=self.config.amsgrad)
        print(self.gen_opt)
        print(self.dis_opt)
        self.noise_adder = NoiseAdder(0, self.config.gaussian_std)
        return
Exemplo n.º 10
0
 def build_model(self):
     if self.args.model_type == 'AE':
         self.model = cc(AE(self.config))
     elif self.args.model_type == 'VQVAE':
         self.model = cc(VQVAE(self.config))
     elif self.args.model_type == 'DAE':
         speaker_encoder = VoiceEncoder()
         self.model = cc(AE_D(self.config, speaker_encoder))
     elif self.args.model_type == 'AutoVC':
         speaker_encoder = VoiceEncoder()
         self.model = cc(AutoVC(32, 256, 512, 32, speaker_encoder))
     self.model.eval()
     return
Exemplo n.º 11
0
 def build_model(self):
     # create model, discriminator, optimizers
     self.model = cc(AE(self.config))
     print(self.model)
     optimizer = self.config['optimizer']
     self.opt = torch.optim.Adam(self.model.parameters(),
                                 lr=optimizer['lr'],
                                 betas=(optimizer['beta1'],
                                        optimizer['beta2']),
                                 amsgrad=optimizer['amsgrad'],
                                 weight_decay=optimizer['weight_decay'])
     print(self.opt)
     return
Exemplo n.º 12
0
 def build_model(self):
     # create model, discriminator, optimizers
     self.model = cc(AE(self.config))
     print(self.model)
     optimizer = self.config["optimizer"]
     self.opt = flow.optim.Adam(
         self.model.parameters(),
         lr=optimizer["lr"],
         betas=(optimizer["beta1"], optimizer["beta2"]),
         amsgrad=optimizer["amsgrad"],
         weight_decay=optimizer["weight_decay"],
     )
     return
Exemplo n.º 13
0
else:
    ltmgFile = args.datasetName + '/T2000_LTMG.txt'

regulationMatrix = readLTMGnonsparse(args.LTMGDir, ltmgFile)
regulationMatrix = torch.from_numpy(regulationMatrix)
if args.precisionModel == 'Double':
    regulationMatrix = regulationMatrix.type(torch.DoubleTensor)
elif args.precisionModel == 'Float':
    regulationMatrix = regulationMatrix.type(torch.FloatTensor)

# Original
if args.model == 'VAE':
    # model = VAE(dim=scData.features.shape[1]).to(device)
    model = VAE2d(dim=scData.features.shape[1]).to(device)
elif args.model == 'AE':
    model = AE(dim=scData.features.shape[1]).to(device)
if args.precisionModel == 'Double':
    model = model.double()
optimizer = optim.Adam(model.parameters(), lr=1e-3)

# Benchmark
bench_pd = pd.read_csv(args.benchmark, index_col=0)
# t1=pd.read_csv('/home/jwang/data/scData/13.Zeisel/Zeisel_cell_label.csv',index_col=0)
bench_celltype = bench_pd.iloc[:, 0].to_numpy()

# whether to output debuginfo in running time and memory consumption


def debuginfoStr(info):
    if args.debuginfo:
        print('---' +
Exemplo n.º 14
0
def main(_):
    if FLAGS.exp_name is None:
        FLAGS.exp_name = "reconstrued_results_unitLength" + str(
            int(FLAGS.latent_dim / FLAGS.latent_num))
    image_shape = [
        int(i) for i in FLAGS.image_shape.strip('()[]{}').split(',')
    ]
    dirs = init_directories(FLAGS.exp_name, FLAGS.output_dir)
    dirs[
        'data'] = '../../npz_datas' if FLAGS.data_dir is None else FLAGS.data_dir
    dirs['codes'] = os.path.join(dirs['data'], 'codes/')
    create_directories(dirs, FLAGS.train, FLAGS.save_codes)

    output_dim = reduce(mul, image_shape, 1)

    run_config = tf.ConfigProto(allow_soft_placement=True)
    run_config.gpu_options.allow_growth = True
    run_config.gpu_options.per_process_gpu_memory_fraction = 0.9
    sess = tf.Session(config=run_config)

    ae = AE(
        session=sess,
        arch=FLAGS.arch,
        lr=FLAGS.lr,
        alpha=FLAGS.alpha,
        beta=FLAGS.beta,
        latent_dim=FLAGS.latent_dim,
        latent_num=FLAGS.latent_num,
        class_net_unit_num=FLAGS.class_net_unit_num,
        output_dim=output_dim,
        batch_size=FLAGS.batch_size,
        image_shape=image_shape,
        exp_name=FLAGS.exp_name,
        dirs=dirs,
        vis_reconst=FLAGS.visualize_reconstruct,
    )

    if FLAGS.save_codes:
        sampleNum = 1000  # 50x64 large batch, forward prop only
        dataVisualName = 'SVHN10_img_N1000x32x32x3_testForModularity'
        data_manager = ShapesDataManager(dirs['data'],
                                         dataVisualName,
                                         FLAGS.batch_size,
                                         image_shape,
                                         shuffle=False,
                                         file_ext=FLAGS.file_ext,
                                         train_fract=1.0,
                                         inf=True)

        #data_manager.set_divisor_batch_size()

        ae.train_iter, ae.dev_iter, ae.test_iter = data_manager.get_iterators()

        ae.session.run(tf.global_variables_initializer())
        #saved_step = ae.load()
        saved_step = ae.load_fixedNum(4000)
        assert saved_step > 1, "A trained model is needed to encode the data!"

        pathForSave = 'ValidateEncodedImgs'
        if not os.path.exists(pathForSave):
            os.mkdir(pathForSave)

        codes = []
        images = []
        for batch_num in range(int(sampleNum / FLAGS.batch_size)):
            img_batch, _mask1, _ = next(ae.train_iter)
            #code = ae.encode(img_batch) #[batch_size, reg_latent_dim]
            code, image = ae.getCodesAndImgs(pathForSave, img_batch, batch_num)
            codes.append(code)
            images.append(image)
            if batch_num < 5 or batch_num % 10 == 0:
                print(("Batch number {0}".format(batch_num)))

        codes = np.vstack(codes)
        images = np.vstack(images)
        codes_name = 'CIFAR3_codesModularityMetricsCal'
        filename = os.path.join(pathForSave, "codes_" + codes_name)
        #np.save(filename, codes)
        np.savez(filename + '.npz', imagesNorm0_1=images, codes=codes)

        print(("Images and Codes saved to: {0}".format(filename)))
Exemplo n.º 15
0
import torchvision.transforms as transforms
from preprocess import preprocess, Image_Dataset2
from model import AE
import sys

npy_path = sys.argv[1]
model_path = sys.argv[2]

trainX = np.load(npy_path)

trainX_preprocessed, trainX_preprocessed2 = preprocess(trainX)
img_dataset = Image_Dataset2(trainX_preprocessed)

same_seeds(0)

model = AE().cuda()
criterion = nn.MSELoss()
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-5, weight_decay=1e-5)
#optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, weight_decay=1e-5, momentum=0.9)
scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, 'min') # adjust lr

model.train()
n_epoch = 300


# 準備 dataloader, model, loss criterion 和 optimizer
img_dataloader = DataLoader(img_dataset, batch_size=64, shuffle=True)


# 主要的訓練過程
for epoch in range(n_epoch):
Exemplo n.º 16
0
    def export(self,
               src_dico,
               tgt_dico,
               emb_en,
               emb_it,
               seed,
               export_emb=False):
        params = _get_eval_params(self.params)
        eval = Evaluator(params, emb_en, emb_it, torch.cuda.is_available())
        # Export adversarial dictionaries
        optim_X_AE = AE(params).cuda()
        optim_Y_AE = AE(params).cuda()
        print('Loading pre-trained models...')
        optim_X_AE.load_state_dict(
            torch.load(self.tune_dir +
                       '/best/seed_{}_dico_{}_best_X.t7'.format(
                           seed, params.dico_build)))
        optim_Y_AE.load_state_dict(
            torch.load(self.tune_dir +
                       '/best/seed_{}_dico_{}_best_Y.t7'.format(
                           seed, params.dico_build)))
        X_Z = optim_X_AE.encode(Variable(emb_en)).data
        Y_Z = optim_Y_AE.encode(Variable(emb_it)).data

        mstart_time = timer()
        for method in ['nn', 'csls_knn_10']:
            results = get_word_translation_accuracy(params.src_lang,
                                                    src_dico[1],
                                                    X_Z,
                                                    params.tgt_lang,
                                                    tgt_dico[1],
                                                    emb_it,
                                                    method=method,
                                                    dico_eval=self.eval_file,
                                                    device=params.cuda_device)
            acc1 = results[0][1]
            results = get_word_translation_accuracy(params.tgt_lang,
                                                    tgt_dico[1],
                                                    Y_Z,
                                                    params.src_lang,
                                                    src_dico[1],
                                                    emb_en,
                                                    method=method,
                                                    dico_eval=self.eval_file2,
                                                    device=params.cuda_device)
            acc2 = results[0][1]

            # csls = 0
            print('{} takes {:.2f}s'.format(method, timer() - mstart_time))
            print('Method:{} score:{:.4f}-{:.4f}'.format(method, acc1, acc2))

        f_csls = eval.dist_mean_cosine(X_Z, emb_it)
        b_csls = eval.dist_mean_cosine(Y_Z, emb_en)
        csls = (f_csls + b_csls) / 2.0
        print("Seed:{},ACC:{:.4f}-{:.4f},CSLS_FB:{:.6f}".format(
            seed, acc1, acc2, csls))
        #'''
        print('Building dictionaries...')
        params.dico_build = "S2T&T2S"
        params.dico_method = "csls_knn_10"
        X_Z = X_Z / X_Z.norm(2, 1, keepdim=True).expand_as(X_Z)
        emb_it = emb_it / emb_it.norm(2, 1, keepdim=True).expand_as(emb_it)
        f_dico_induce = build_dictionary(X_Z, emb_it, params)
        f_dico_induce = f_dico_induce.cpu().numpy()
        Y_Z = Y_Z / Y_Z.norm(2, 1, keepdim=True).expand_as(Y_Z)
        emb_en = emb_en / emb_en.norm(2, 1, keepdim=True).expand_as(emb_en)
        b_dico_induce = build_dictionary(Y_Z, emb_en, params)
        b_dico_induce = b_dico_induce.cpu().numpy()

        f_dico_set = set([(a, b) for a, b in f_dico_induce])
        b_dico_set = set([(b, a) for a, b in b_dico_induce])

        intersect = list(f_dico_set & b_dico_set)
        union = list(f_dico_set | b_dico_set)

        with io.open(
                self.tune_dir +
                '/export/{}-{}.dict'.format(params.src_lang, params.tgt_lang),
                'w',
                encoding='utf-8',
                newline='\n') as f:
            for item in f_dico_induce:
                f.write('{} {}\n'.format(src_dico[0][item[0]],
                                         tgt_dico[0][item[1]]))

        with io.open(
                self.tune_dir +
                '/export/{}-{}.dict'.format(params.tgt_lang, params.src_lang),
                'w',
                encoding='utf-8',
                newline='\n') as f:
            for item in b_dico_induce:
                f.write('{} {}\n'.format(tgt_dico[0][item[0]],
                                         src_dico[0][item[1]]))

        with io.open(self.tune_dir + '/export/{}-{}.intersect'.format(
                params.src_lang, params.tgt_lang),
                     'w',
                     encoding='utf-8',
                     newline='\n') as f:
            for item in intersect:
                f.write('{} {}\n'.format(src_dico[0][item[0]],
                                         tgt_dico[0][item[1]]))

        with io.open(self.tune_dir + '/export/{}-{}.intersect'.format(
                params.tgt_lang, params.src_lang),
                     'w',
                     encoding='utf-8',
                     newline='\n') as f:
            for item in intersect:
                f.write('{} {}\n'.format(tgt_dico[0][item[1]],
                                         src_dico[0][item[0]]))

        with io.open(
                self.tune_dir +
                '/export/{}-{}.union'.format(params.src_lang, params.tgt_lang),
                'w',
                encoding='utf-8',
                newline='\n') as f:
            for item in union:
                f.write('{} {}\n'.format(src_dico[0][item[0]],
                                         tgt_dico[0][item[1]]))

        with io.open(
                self.tune_dir +
                '/export/{}-{}.union'.format(params.tgt_lang, params.src_lang),
                'w',
                encoding='utf-8',
                newline='\n') as f:
            for item in union:
                f.write('{} {}\n'.format(tgt_dico[0][item[1]],
                                         src_dico[0][item[0]]))

        if export_emb:
            print('Exporting {}-{}.{}'.format(params.src_lang, params.tgt_lang,
                                              params.src_lang))
            loader.export_embeddings(
                src_dico[0],
                X_Z,
                path=self.tune_dir + '/export/{}-{}.{}'.format(
                    params.src_lang, params.tgt_lang, params.src_lang),
                eformat='txt')
            print('Exporting {}-{}.{}'.format(params.src_lang, params.tgt_lang,
                                              params.tgt_lang))
            loader.export_embeddings(
                tgt_dico[0],
                emb_it,
                path=self.tune_dir + '/export/{}-{}.{}'.format(
                    params.src_lang, params.tgt_lang, params.tgt_lang),
                eformat='txt')
            print('Exporting {}-{}.{}'.format(params.tgt_lang, params.src_lang,
                                              params.tgt_lang))
            loader.export_embeddings(
                tgt_dico[0],
                Y_Z,
                path=self.tune_dir + '/export/{}-{}.{}'.format(
                    params.tgt_lang, params.src_lang, params.tgt_lang),
                eformat='txt')
            print('Exporting {}-{}.{}'.format(params.tgt_lang, params.src_lang,
                                              params.src_lang))
            loader.export_embeddings(
                src_dico[0],
                emb_en,
                path=self.tune_dir + '/export/{}-{}.{}'.format(
                    params.tgt_lang, params.src_lang, params.src_lang),
                eformat='txt')
Exemplo n.º 17
0
#Save directory
save_dir = './save'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

#Log directory
log_dir = './log'
if not os.path.exists(log_dir):
    os.makedirs(log_dir)
log_file = open(os.path.join(log_dir, 'loss.txt'), 'w')

#Define model's training parameters
lr = 0.0005
num_epochs = 5
ae = AE()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(ae.parameters(), lr=lr, weight_decay=1e-5)


#Validation Loss
def eval_loss():
    val_loss = []
    for batch_id, (x, label) in enumerate(train_loader):
        enc, dec = ae(x)
        loss = criterion(dec, x).item()
        val_loss.append(loss)
        avg_loss = sum(val_loss) / len(val_loss)
        return (avg_loss)

Exemplo n.º 18
0
def main(_):
    if FLAGS.exp_name is None:
        FLAGS.exp_name = "reconstrued_results"
    image_shape = [
        int(i) for i in FLAGS.image_shape.strip('()[]{}').split(',')
    ]
    dirs = init_directories(FLAGS.exp_name, FLAGS.output_dir)
    dirs[
        'data'] = '../../../npz_datas_single_test' if FLAGS.data_dir is None else FLAGS.data_dir
    dirs['codes'] = os.path.join(dirs['data'], 'codes/')
    create_directories(dirs, FLAGS.train, FLAGS.save_codes)

    output_dim = reduce(mul, image_shape, 1)

    run_config = tf.ConfigProto(allow_soft_placement=True)
    run_config.gpu_options.allow_growth = True
    run_config.gpu_options.per_process_gpu_memory_fraction = 0.9
    sess = tf.Session(config=run_config)

    ae = AE(
        session=sess,
        arch=FLAGS.arch,
        lr=FLAGS.lr,
        alpha=FLAGS.alpha,
        beta=FLAGS.beta,
        latent_dim=FLAGS.latent_dim,
        latent_num=FLAGS.latent_num,
        class_net_unit_num=FLAGS.class_net_unit_num,
        output_dim=output_dim,
        batch_size=FLAGS.batch_size,
        image_shape=image_shape,
        exp_name=FLAGS.exp_name,
        dirs=dirs,
        vis_reconst=FLAGS.visualize_reconstruct,
    )

    # test get changed images
    data1Name = "mnistOffset1_Imgs_GTimages_mask_GTlabel_(32x64)x32x32x1_unitLength1_CodeImageDataset"

    data_manager = ShapesDataManager(dirs['data'],
                                     data1Name,
                                     FLAGS.batch_size,
                                     image_shape,
                                     shuffle=False,
                                     file_ext=FLAGS.file_ext,
                                     train_fract=1.0,
                                     inf=True)
    ae.train_iter1, ae.dev_iter1, ae.test_iter1 = data_manager.get_iterators()

    ae.session.run(tf.global_variables_initializer())
    saved_step = ae.load_fixedNum(1875)
    assert saved_step > 1, "A trained model is needed to encode the data!"

    pathForSave = 'VisualImgsResults'
    try:
        os.makedirs(pathForSave)
    except OSError as exc:  # Python >2.5
        if exc.errno == errno.EEXIST and os.path.isdir(pathForSave):
            pass
        else:
            raise

    assert saved_step > 1, "A trained model is needed to encode the data!"
    sampleNum = 2048
    for k in range(int(sampleNum / FLAGS.batch_size)):
        fixed_x1, fixed_mk1, _ = next(ae.train_iter1)
        #print(fixed_x1.shape)
        #print(fixed_mk1 )
        ae.visualise_reconstruction_path(pathForSave, fixed_x1, fixed_mk1, k)
    #print(k)
    print('finish encode!')
def main(argv):
    TRAIN, NOISE_TYPES, IMAGE_SIZE, FRAME_SIZE, OVERLAY_SIZE, LATENT_CLEAN_SIZE, BATCH_SIZE, EPOCHS, TEST = arguments_parsing(argv)
    
    if TRAIN:
        print('model training with parameters:\n'+
              'noise types = {}\n'.format(NOISE_TYPES)+
              'image size = {}\n'.format(IMAGE_SIZE)+
              'frame size = {}\n'.format(FRAME_SIZE)+
              'overlay size = {}\n'.format(OVERLAY_SIZE)+
              'latent clean size = {}\n'.format(LATENT_CLEAN_SIZE)+
              'batch size = {}\n'.format(BATCH_SIZE)+
              'number of epochs = {}\n'.format(EPOCHS))
        
        # dataset table creating
        make_dataset_table(PATH_TO_DATA, NOISE_TYPES, PATH_TO_DATASET_TABLE)
        train_test_split(PATH_TO_DATASET_TABLE, test_size=0.2)

        # dataset and dataloader creating
        torch.manual_seed(0)
        transforms = [Compose([RandomHorizontalFlip(p=1.0), ToTensor()]),
                      Compose([RandomVerticalFlip(p=1.0), ToTensor()]),
                      Compose([ColorJitter(brightness=(0.9, 2.0), contrast=(0.9, 2.0)), ToTensor()])]

        train_dataset = []
        for transform in transforms:
            dataset = DenoisingDataset(dataset=pd.read_csv(PATH_TO_DATASET_TABLE),
                                       image_size=IMAGE_SIZE,
                                       frame_size=FRAME_SIZE,
                                       overlay_size=OVERLAY_SIZE,
                                       phase='train',
                                       transform=transform)
            train_dataset = ConcatDataset([train_dataset, dataset])

        train_loader = DataLoader(dataset=train_dataset,
                                  batch_size=BATCH_SIZE,
                                  shuffle=True, # can be set to True only for train loader
                                  num_workers=0)

        # model training
        model = AE(1, LATENT_CLEAN_SIZE)
        loss = SSIMLoss()
        latent_loss = MSELoss()
        optimizer = torch.optim.Adam(model.parameters(), lr=1.0e-3)
        model = train_model(model, train_loader,
                            loss, latent_loss,
                            optimizer,
                            epochs=EPOCHS,
                            device=DEVICE)

        # model saving
        path_to_model = './model' + '_{}'.format('_'.join([str(elem) for elem in NOISE_TYPES])) + '.pth'
        torch.save(model, path_to_model)
    
    if TEST:    
        # model loading
        path_to_model = './model' + '_{}'.format('_'.join([str(elem) for elem in NOISE_TYPES])) + '.pth'
        print('{} testing...\n'.format(os.path.basename(path_to_model)))
        model = torch.load(path_to_model)

        dataset=pd.read_csv(PATH_TO_DATASET_TABLE)
        test_dataset = dataset[dataset['phase']=='test']

        # model testing and results saving
        loss = SSIMLoss()
        latent_loss = MSELoss()
        print('{} evaluation on test images'.format(os.path.basename(path_to_model)))
        test_evaluation(model, test_dataset,
                        loss, latent_loss,
                        device=DEVICE)
        print()
        
        path_to_results = PATH_TO_RESULTS + '_{}'.format('_'.join([str(elem) for elem in NOISE_TYPES]))
        if not os.path.exists(path_to_results):
            os.makedirs(path_to_results)
        print('{} running and results saving'.format(os.path.basename(path_to_model)))
        test_model(model, test_dataset, path_to_results)
        
    print('process completed: OK')
Exemplo n.º 20
0
def ae_train(train_dataset, test_dataset, epochs, mode):
    # reload and freeze model.

    gan_checkpoint_dir = './gan_training_checkpoints'
    gan_checkpoint = tf.train.Checkpoint(
        optimizer=generator_opt,
        discriminator_optimizer=discriminator_opt,
        generator=generator,
        discriminator=discriminator,
    )

    latest = tf.train.latest_checkpoint(gan_checkpoint_dir)
    gan_checkpoint.restore(latest)

    frozen_generator = gan_checkpoint.generator
    frozen_generator.trainable = False

    # build vae model.
    vae_opt = tf.keras.optimizers.Adam(1e-3)

    if mode == TrainMode.AE:
        print(
            "*********************** Training naive AE***************************"
        )
        model = AE(frozen_generator)
        checkpoint_dir = './ae_training_checkpoints'
        checkpoint_prefix = os.path.join(checkpoint_dir, "ckpt")
        checkpoint = tf.train.Checkpoint(AE_optimizer=model.optimizer,
                                         AE=model)
        print("generator is trainable: ", model.generator_net.trainable)
        path = './output/ae_output'
        if not os.path.exists(path):
            os.makedirs(path)
    else:
        print(
            "*********************** Training Auxiliary AE***************************"
        )
        model = AAE(gan_checkpoint)
        model.discriminator.trainable = False
        model.generator_net.trainable = False
        # model.build((128, 128))
        print(model.discriminator.summary())
        print(model.discriminator.get_layer('conv2d_3'))
        checkpoint_dir = './aae_training_checkpoints'
        checkpoint_prefix = os.path.join(checkpoint_dir, "ckpt")
        checkpoint = tf.train.Checkpoint(AE_optimizer=model.optimizer,
                                         AE=model)
        path = './output/aae_output'
        print("generator is trainable: ", model.generator_net.trainable)
        if not os.path.exists(path):
            os.makedirs(path)

    # train
    sample_input = next(iter(test_dataset))[:4, ::]
    ae_generate_and_save_images(model, 0, sample_input, path)
    for epoch in range(1, epochs + 1):
        start_time = time.time()
        for train_x in train_dataset:
            model.train(train_x)
        end_time = time.time()

        if epoch % 1 == 0:
            loss = tf.keras.metrics.Mean()
            for test_x in test_dataset:
                loss(model.compute_loss(test_x))
            elbo = -loss.result()
            print('Epoch: {}, Test set ELBO: {}, '
                  'time elapse for current epoch {}'.format(
                      epoch, elbo, end_time - start_time))
            ae_generate_and_save_images(model, epoch, sample_input, path)
            checkpoint.save(file_prefix=checkpoint_prefix + "_epoch_%d" %
                            (epoch + 1))
        if epoch == epochs - 1:
            ae_generate_and_save_images(model, epoch, sample_input, path)
            checkpoint.save(file_prefix=checkpoint_prefix + "_epoch_%d" %
                            (epoch + 1))
Exemplo n.º 21
0
def train(*,
          folder=None,
          dataset='mnist',
          patch_size=8,
          resume=False,
          log_interval=1,
          device='cpu',
          objective='vae',
          batch_size=64,
          nz=100,
          lr=0.001,
          num_workers=1,
          nb_filters=64,
          nb_draw_layers=1):
    if folder is None:
        folder = f'results/{dataset}/{patch_size}x{patch_size}'
    try:
        os.makedirs(folder)
    except Exception:
        pass
    act = 'sigmoid'
    nb_epochs = 3000
    dataset = load_dataset(dataset, split='train')
    if patch_size is not None:
        patch_size = int(patch_size)
        dataset = PatchDataset(dataset, patch_size)
    x0, _ = dataset[0]
    nc = x0.size(0)
    dataloader = torch.utils.data.DataLoader(
        dataset,
        batch_size=batch_size,
        shuffle=True,
        num_workers=num_workers,
    )
    if resume:
        net = torch.load('{}/net.th'.format(folder))
    else:
        net = AE(
            latent_size=nz,
            nc=nc,
            w=patch_size,
            ndf=nb_filters,
            act=act,
            objective=objective,
        )
    opt = optim.Adam(net.parameters(), lr=lr)
    net = net.to(device)
    niter = 0
    for epoch in range(nb_epochs):
        for i, (X, _), in enumerate(dataloader):
            net.zero_grad()
            X = X.to(device)
            Xrec, mu, logvar = net(X)
            rec, kld = net.loss_function(X, Xrec, mu, logvar)
            loss = rec + kld
            loss.backward()
            opt.step()
            if niter % log_interval == 0:
                print(
                    f'Epoch: {epoch:05d}/{nb_epochs:05d} iter: {niter:05d} loss: {loss.item():.2f} rec: {rec.item():.2f} kld:{kld.item():.2f}'
                )
            if niter % 100 == 0:
                Xsamples = net.sample(nb_examples=100)
                X = 0.5 * (X + 1) if act == 'tanh' else X
                Xrecs = 0.5 * (Xrec + 1) if act == 'tanh' else Xrec
                Xsamples = 0.5 * (Xsamples + 1) if act == 'tanh' else Xsamples
                X = X.detach().to('cpu').numpy()
                Xrecs = Xrecs.detach().to('cpu').numpy()
                Xsamples = Xsamples.detach().to('cpu').numpy()
                imsave(f'{folder}/real_samples.png', grid_of_images_default(X))
                imsave(f'{folder}/rec_samples.png',
                       grid_of_images_default(Xrecs))
                imsave(f'{folder}/fake_samples.png',
                       grid_of_images_default(Xsamples))
                torch.save(net, '{}/net.th'.format(folder))
            niter += 1
Exemplo n.º 22
0
def main(_):
    if FLAGS.exp_name is None:
        FLAGS.exp_name = "separateRep_{}_{}_{}_lr_{}".format( FLAGS.arch, FLAGS.latent_dim, FLAGS.image_wh, FLAGS.lr)
    image_shape = [int(i) for i in FLAGS.image_shape.strip('()[]{}').split(',')]
    dirs = init_directories(FLAGS.exp_name, FLAGS.output_dir)
    dirs['data'] = '../../../npz_datas' if FLAGS.data_dir is None else FLAGS.data_dir
    dirs['codes'] = os.path.join(dirs['data'], 'codes/')
    create_directories(dirs, FLAGS.train, FLAGS.save_codes)

    output_dim = reduce(mul, image_shape, 1)

    run_config = tf.ConfigProto(allow_soft_placement=True)
    run_config.gpu_options.allow_growth = True
    run_config.gpu_options.per_process_gpu_memory_fraction = 0.9
    sess = tf.Session(config=run_config)

    ae = AE(
        session=sess,
        arch=FLAGS.arch,
        lr=FLAGS.lr,
        alpha=FLAGS.alpha,
        beta=FLAGS.beta,
        latent_dim=FLAGS.latent_dim,
        latent_num=FLAGS.latent_num,
        class_net_unit_num=FLAGS.class_net_unit_num,
        output_dim=output_dim,
        batch_size=FLAGS.batch_size,
        image_shape=image_shape,
        exp_name=FLAGS.exp_name,
        dirs=dirs,
        vis_reconst=FLAGS.visualize_reconstruct,
    )


    if FLAGS.visualize_reconstruct:
        sampleNum =1280 # 20x64 large batch, forward prop only
        dataVisualName1='pattern_(20x64)x64x64x3_unitLength9_test_visualdata1'
        dataVisualName2='pattern_(20x64)x64x64x3_unitLength9_test_visualdata2'
        
        data_manager = TeapotsDataManager(dirs['data'],
                        dataVisualName1,dataVisualName2, FLAGS.batch_size, 
                        image_shape, shuffle=False,file_ext=FLAGS.file_ext, train_fract=0.8, 
                        inf=True,supervised=False)  
        #data_manager.set_divisor_batch_size()

        #ae.train_iter, ae.dev_iter, ae.test_iter= data_manager.get_iterators()
        ae.train_iter1, ae.dev_iter1, ae.test_iter1,ae.train_iter2, ae.dev_iter2, ae.test_iter2= data_manager.get_iterators()
        
        ae.session.run(tf.global_variables_initializer())
        # change the which iteration ckpt you want to use
        saved_step = ae.load_fixedNum(inter_num=5750)
        assert saved_step > 1, "A trained model is needed to encode the data!"
        
        pathForSave='VisualImgsResults'
        try:
            os.makedirs(pathForSave)
        except OSError as exc:  # Python >2.5
            if exc.errno == errno.EEXIST and os.path.isdir(pathForSave):
                pass
            else:
                raise

        for batch_num in range(int(sampleNum/FLAGS.batch_size)):
            img_batch1, _mask1, _ = next(ae.train_iter1)
            img_batch2, _mask2, _ = next(ae.train_iter2)
            #code = ae.encode(img_batch) #[batch_size, reg_latent_dim]
            ae.getVisualImgs(pathForSave,img_batch1, _mask1,img_batch2, _mask2,batch_num)
            if batch_num < 5 or batch_num % 10 == 0:
                print(("Batch number {0}".format(batch_num)))
           
        print("Images and Codes saved to Folder: VisualImgsResults")
Exemplo n.º 23
0
def make_conversion(root,
                    result_dir,
                    checkpoint,
                    ut_min=91,
                    ut_max=100,
                    sp_min=91,
                    sp_max=100):
    alpha = 0.42
    n_fft = 1024
    root = Path(root)
    result_dir = Path(result_dir)
    dicts = torch.load(checkpoint, map_location='cpu')
    model = AE(dicts['config']['model'], train=False)
    model.load_state_dict(dicts['model'])
    model = model.eval()
    for s in range(sp_min, sp_max + 1):
        sp = f'jvs{s:03}'
        sp_root = result_dir / sp
        sp_root.mkdir(parents=True, exist_ok=True)
        sp_dict_path = sp_root / 'sp_dict.pt'

        if not sp_dict_path.is_file():
            nonparas = list(
                (root / sp /
                 'nonpara30/wav24kHz16bit').glob('BASIC5000_*.mcep.npy'))
            index = max(enumerate(nonparas),
                        key=lambda p: p[1].stat().st_size)[0]
            ref_mcep = nonparas[index]
            ref_f0 = ref_mcep.parent / ref_mcep.stem.replace(
                '.mcep', '.f0.npy')
            sp_dict = extract_from(model, ref_mcep, ref_f0, sp_dict_path)
        else:
            sp_dict = torch.load(sp_dict_path)
        for s2 in range(sp_min, sp_max + 1):
            sp2 = f'jvs{s2:03}'
            sp2_root = result_dir / sp2
            sp2_root.mkdir(parents=True, exist_ok=True)

            target_root = sp_root / sp2
            target_root.mkdir(parents=True, exist_ok=True)
            for u in range(ut_min, ut_max + 1):
                src_mcep = root / sp2 / 'parallel100/wav24kHz16bit' / f'VOICEACTRESS100_{u:03}.mcep.npy'
                src_f0 = root / sp2 / 'parallel100/wav24kHz16bit' / f'VOICEACTRESS100_{u:03}.f0.npy'
                src_c0 = root / sp2 / 'parallel100/wav24kHz16bit' / f'VOICEACTRESS100_{u:03}.c0.npy'
                src_ap = root / sp2 / 'parallel100/wav24kHz16bit' / f'VOICEACTRESS100_{u:03}.ap.npy'
                src_dict_path = sp2_root / f'VOICEACTRESS100_{u:03}.pt'
                if not src_dict_path.is_file():
                    src_dict = prep_content(model, src_mcep, src_dict_path)
                else:
                    src_dict = torch.load(src_dict_path)

                converted_mcep = model.reconstruct_mcep(
                    src_dict['c'], src_dict['q'], sp_dict['k'],
                    sp_dict['v']).squeeze().numpy()
                tgt_mcep = target_root / f'VOICEACTRESS100_{u:03}.mcep.npy'
                np.save(tgt_mcep, converted_mcep)

                f0 = np.load(src_f0).astype(np.float64)
                f0 = convert_f0(f0, sp_dict)
                ap = np.load(src_ap).astype(np.float64)
                ap = reconstruct_ap(ap)
                c0 = np.load(src_c0).astype(np.float64)
                assert (
                    c0.shape[0] <= converted_mcep.shape[-1]
                ), f'{s}->{s2}/{u}, {c0.shape[0]} <= {converted_mcep.shape[-1]}'
                mcep = np.hstack(
                    [c0[:, None],
                     converted_mcep[:, :c0.shape[0]].T]).astype(np.float64)
                sp = pysptk.mc2sp(np.ascontiguousarray(mcep), alpha, n_fft)
                wav = pyworld.synthesize(f0, sp, ap, 16000)
                tgt_wav = target_root / f'VOICEACTRESS100_{u:03}.wav'
                wavfile.write(tgt_wav, 16000, (wav * 32768).astype(np.int16))
                print(tgt_wav, flush=True)
Exemplo n.º 24
0
def main(_):
    if FLAGS.exp_name is None:
        FLAGS.exp_name = "reconstrued_results"
    image_shape = [
        int(i) for i in FLAGS.image_shape.strip('()[]{}').split(',')
    ]
    dirs = init_directories(FLAGS.exp_name, FLAGS.output_dir)
    dirs[
        'data'] = '../../../npz_datas_single_test' if FLAGS.data_dir is None else FLAGS.data_dir
    dirs['codes'] = os.path.join(dirs['data'], 'codes/')
    create_directories(dirs, FLAGS.train, FLAGS.save_codes)

    output_dim = reduce(mul, image_shape, 1)

    run_config = tf.ConfigProto(allow_soft_placement=True)
    run_config.gpu_options.allow_growth = True
    run_config.gpu_options.per_process_gpu_memory_fraction = 0.9
    sess = tf.Session(config=run_config)

    ae = AE(
        session=sess,
        arch=FLAGS.arch,
        lr=FLAGS.lr,
        alpha=FLAGS.alpha,
        beta=FLAGS.beta,
        latent_dim=FLAGS.latent_dim,
        latent_num=FLAGS.latent_num,
        class_net_unit_num=FLAGS.class_net_unit_num,
        output_dim=output_dim,
        batch_size=FLAGS.batch_size,
        image_shape=image_shape,
        exp_name=FLAGS.exp_name,
        dirs=dirs,
        vis_reconst=FLAGS.visualize_reconstruct,
    )

    # save codes and images
    data1Name = "mnistOffset1_Imgs_GTimages_mask_GTlabel_(32x64)x32x32x1_unitLength1_CodeImageDataset"

    data_manager = ShapesDataManager(dirs['data'],
                                     data1Name,
                                     FLAGS.batch_size,
                                     image_shape,
                                     shuffle=False,
                                     file_ext=FLAGS.file_ext,
                                     train_fract=1.0,
                                     inf=True)
    ae.train_iter1, ae.dev_iter1, ae.test_iter1 = data_manager.get_iterators()

    ae.session.run(tf.global_variables_initializer())
    saved_step = ae.load_fixedNum(1875)
    assert saved_step > 1, "A trained model is needed to encode the data!"

    pathForSave = 'ValidateEncodedImgs_Offset{}'.format(1)
    save_name = "reconstrued_results_offset{}".format(1)
    try:
        os.makedirs(pathForSave)
    except OSError as exc:  # Python >2.5
        if exc.errno == errno.EEXIST and os.path.isdir(pathForSave):
            pass
        else:
            raise

    codes = []
    images = []
    sampleNum = 2048
    for batch_num in range(int(sampleNum / FLAGS.batch_size)):
        img_batch, _mask1, _ = next(ae.train_iter1)
        # code = ae.encode(img_batch) #[batch_size, reg_latent_dim]
        code, image = ae.getCodesAndImgs(pathForSave, img_batch, _mask1,
                                         batch_num)
        codes.append(code)
        images.append(image)
        if batch_num < 5 or batch_num % 10 == 0:
            print(("Batch number {0}".format(batch_num)))

    codes = np.vstack(codes)
    images = np.vstack(images)
    filename = os.path.join(dirs['codes'], "codes_" + save_name)
    # np.save(filename, codes)
    np.savez(filename + '.npz', imagesNorm0_1=images, codes=codes)

    print(("Images and Codes saved to: {0}".format(filename)))
Exemplo n.º 25
0
def main(_):
    if FLAGS.exp_name is None:
        FLAGS.exp_name = "reconstrued_results"
    image_shape = [int(i) for i in FLAGS.image_shape.strip('()[]{}').split(',')]
    dirs = init_directories(FLAGS.exp_name, FLAGS.output_dir)
    dirs['data'] = '../../../npz_datas' if FLAGS.data_dir is None else FLAGS.data_dir
    dirs['codes'] = os.path.join(dirs['data'], 'codes/')
    create_directories(dirs, FLAGS.train, FLAGS.save_codes)
    
    output_dim  = reduce(mul, image_shape, 1)
    
    run_config = tf.ConfigProto(allow_soft_placement=True)
    run_config.gpu_options.allow_growth=True
    run_config.gpu_options.per_process_gpu_memory_fraction=0.9
    sess = tf.Session(config=run_config)

    ae = AE(
        session=sess,
        arch=FLAGS.arch,
        lr=FLAGS.lr,
        alpha=FLAGS.alpha,
        beta=FLAGS.beta,
        latent_dim=FLAGS.latent_dim,
        latent_num=FLAGS.latent_num,
        class_net_unit_num=FLAGS.class_net_unit_num,
        output_dim=output_dim,
        batch_size=FLAGS.batch_size,
        image_shape=image_shape,
        exp_name=FLAGS.exp_name,
        dirs=dirs,
        vis_reconst=FLAGS.visualize_reconstruct,
    )

  
    if FLAGS.train:

        data1Name='FashionMultiAndMask_unitlength1_20000x32x32x1_train'

        data_manager = ShapesDataManager(dirs['data'],
                        data1Name, FLAGS.batch_size, 
                        image_shape, shuffle=False,file_ext=FLAGS.file_ext, train_fract=0.8, 
                        inf=True)
        ae.train_iter1, ae.dev_iter1, ae.test_iter1= data_manager.get_iterators()
        
        n_iters_per_epoch = data_manager.n_train // data_manager.batch_size
        FLAGS.stats_interval = int(FLAGS.stats_interval * n_iters_per_epoch)
        FLAGS.ckpt_interval = int(FLAGS.ckpt_interval * n_iters_per_epoch)
        n_iters = int(FLAGS.epochs * n_iters_per_epoch)
        
        ae.train(n_iters, n_iters_per_epoch, FLAGS.stats_interval, FLAGS.ckpt_interval)

    
    # test get changed images 
    data1Name="FashionMultiAndMask_unitlength1_64x32x32x1_test"
    
    data_manager = ShapesDataManager(dirs['data'],
                    data1Name,FLAGS.batch_size, 
                    image_shape, shuffle=False,file_ext=FLAGS.file_ext, train_fract=1.0, 
                    inf=True)
    ae.train_iter1, ae.dev_iter1, ae.test_iter1= data_manager.get_iterators()

    ae.session.run(tf.global_variables_initializer())
    saved_step = ae.load()
    assert saved_step > 1, "A trained model is needed to encode the data!"
    
    pathForSave='RecostructedImg64Test'
    try:
        os.makedirs(pathForSave)
    except OSError as exc:  # Python >2.5
        if exc.errno == errno.EEXIST and os.path.isdir(pathForSave):
            pass
        else:
            raise

    assert saved_step > 1, "A trained model is needed to encode the data!"
    for k in range(1):
        fixed_x1, fixed_mk1 , _ = next(ae.train_iter1)
        #print(fixed_x1.shape)
        #print(fixed_mk1)
        ae.encodeImg(pathForSave,fixed_x1, fixed_mk1,k)
    #print(k)
    print('finish encode!')
Exemplo n.º 26
0
        for i, (data, label) in enumerate(test_loader):
            data = data.to(device).view(-1, 28 * 28)
            label = label.to(device).view(-1, 28 * 28)
            _, recons_x = model(data)
            loss = criterion(recons_x, label)
            test_loss += loss.item()
            total += label.size(0)

    avg_loss = test_loss / total

    print('===> Test Average loss: {:.7f}\n'.format(avg_loss))

    return avg_loss


ae_model = AE()
ae_model.to(device)
optimizer = optim.Adam(ae_model.parameters(), lr=0.001, betas=(0.9, 0.999))
criterion = nn.MSELoss()
batch_size = 256

train_loader, test_loader = get_customDataLoader(
    './data_for_ae/data_for_autoencoder.pth', batch_size=batch_size)
trainer(ae_model,
        train_loader,
        test_loader,
        optimizer,
        criterion,
        save_path='./pretrained_models/autoencoder_pretrained_1.pth')
#load_model(ae_model, './autoencoder_pretrained.pth')
#test(ae_model, test_loader)
Exemplo n.º 27
0
    # gan_checkpoint = tf.train.Checkpoint(
    #     optimizer=generator_opt,
    #     discriminator_optimizer=discriminator_opt,
    #     generator=generator,
    #     discriminator=discriminator,
    # )
    #
    # latest = tf.train.latest_checkpoint(gan_checkpoint_dir)
    # gan_checkpoint.restore(latest)
    #
    # frozen_generator = gan_checkpoint.generator
    # frozen_discriminator = gan_checkpoint.discriminator
    # frozen_generator.trainable = False

    # load Auto-decoder.
    model = AE(generator)
    ae_checkpoint_dir = './ae_training_checkpoints'
    ae_checkpoint = tf.train.Checkpoint(
        checkpoint=tf.train.Checkpoint(optimizer=model.optimizer, model=model))
    latest = tf.train.latest_checkpoint(ae_checkpoint_dir)
    status = ae_checkpoint.restore(latest)
    print(status)
    print(latest)
    print(dir(ae_checkpoint))
    encoder = ae_checkpoint.model.inference_net

    test_img = cv2.imread(
        '/data2/huangps/data_freakie/gx/data/gonet_original/data_test_annotation/negative_L/img_negative_L_99.jpg'
    )
    latent = encoder(test_img)
    print(latent)
Exemplo n.º 28
0
flags.DEFINE_boolean("Inference", False, "Training or Inference")
flags.DEFINE_string("inf_path", None, "Inference wav directory")
flags.DEFINE_string("inf_save_path", None, "Inference save directory")

FLAGS = flags.FLAGS

FLAGS.c_te_L_F = list(np.int0(np.array(FLAGS.c_te_L_F.split(','))))
FLAGS.d_te_L_F = list(np.int0(np.array(FLAGS.d_te_L_F.split(','))))
FLAGS.c_te_N_F = list(np.int0(np.array(FLAGS.c_te_N_F.split(','))))
FLAGS.c_te_str = list(np.int0(np.array(FLAGS.c_te_str.split(','))))

#### PARAMETERS

with tf.compat.v1.Session() as sess:
    ###### BUILD MODEL ####
    G_instance = AE(FLAGS, sess)
    G_instance.build_model()
    if FLAGS.Inference == False:
        ###### TRAIN ######
        G_instance.train_AE()
    else:
        if not os.path.exists(FLAGS.inf_save_path):
            os.makedirs(FLAGS.inf_save_path)
        sess.run(tf.global_variables_initializer())
        saver = tf.train.Saver()
        saver.restore(sess, FLAGS.load_path)
        print('Read ', FLAGS.load_path)
        # get into test directory and open for loop
        inf_files = [
            os.path.join(FLAGS.inf_path, wav)
            for wav in os.listdir(FLAGS.inf_path) if wav.endswith('.wav')
Exemplo n.º 29
0
 def build_model(self): 
     # create model, discriminator, optimizers
     self.model = cc(AE(self.config))
     print(self.model)
     self.model.eval()
     return
Exemplo n.º 30
0
def main():
    params = parse_arguments()
    params.export_dir = "{}/{}-{}/{}/export".format(params.exp_id,
                                                    params.src_lang,
                                                    params.tgt_lang,
                                                    params.norm_embeddings)
    if params.dataset == 'wiki':
        params.eval_file = '/data/dictionaries/{}-{}.5000-6500.txt'.format(
            params.src_lang, params.tgt_lang)
    elif params.dataset == 'wacky':
        params.eval_file = '/data/dictionaries/{}-{}.test.txt'.format(
            params.src_lang, params.tgt_lang)
    else:
        print('Invalid dataset value')
        return
    src_dico, src_emb = load_embeddings(params, source=True, full_vocab=False)
    tgt_dico, tgt_emb = load_embeddings(params, source=False, full_vocab=False)

    if params.norm_embeddings:
        norms = params.norm_embeddings.strip().split('_')
        for item in norms:
            if item == 'unit':
                src_emb = norm_embeddings(src_emb)
                tgt_emb = norm_embeddings(tgt_emb)
            elif item == 'center':
                src_emb = center_embeddings(src_emb)
                tgt_emb = center_embeddings(tgt_emb)
            elif item == 'none':
                pass
            else:
                print('Invalid norm:{}'.format(item))

    src_emb = torch.from_numpy(src_emb).float()
    tgt_emb = torch.from_numpy(tgt_emb).float()
    #src_emb = torch.randn(200000,300)
    #tgt_emb = torch.randn(200000,300)
    #src_emb = src_emb[torch.randperm(src_emb.size(0))]
    #tgt_emb = tgt_emb[torch.randperm(tgt_emb.size(0))]

    if torch.cuda.is_available():
        torch.cuda.set_device(params.cuda_device)
        src_emb = src_emb.cuda()
        tgt_emb = tgt_emb.cuda()

    if params.mode == 0:  # train model
        init_seed = int(params.seed)
        t = BiAAE(params)
        initialize_exp(init_seed)
        t.init_state(seed=init_seed)
        t.train(src_dico, tgt_dico, src_emb, tgt_emb, init_seed)

    elif params.mode == 1:

        X_AE = AE(params).cuda()
        Y_AE = AE(params).cuda()

        X_AE.load_state_dict(torch.load(params.src_pretrain))
        Y_AE.load_state_dict(torch.load(params.tgt_pretrain))

        X_Z = X_AE.encode(Variable(src_emb)).data
        Y_Z = Y_AE.encode(Variable(tgt_emb)).data

        mstart_time = timer()
        for method in ['nn', 'csls_knn_10']:
            results = get_word_translation_accuracy(params.src_lang,
                                                    src_dico[1],
                                                    X_Z,
                                                    params.tgt_lang,
                                                    tgt_dico[1],
                                                    Y_Z,
                                                    method=method,
                                                    dico_eval=params.eval_file,
                                                    device=params.cuda_device)
            acc = results[0][1]
            print('{} takes {:.2f}s'.format(method, timer() - mstart_time))
            print('Method:{} score:{:.4f}'.format(method, acc))

        params.dico_build = "S2T&T2S"
        params.dico_method = "csls_knn_10"
        dico_max_size = 10000
        '''
        eval = Evaluator(params, src_emb, tgt_emb, torch.cuda.is_available())
        X_Z = X_Z / X_Z.norm(2, 1, keepdim=True).expand_as(X_Z)
        Y_Z = Y_Z / Y_Z.norm(2, 1, keepdim=True).expand_as(Y_Z)
        dico = build_dictionary(X_Z, Y_Z, params)
        
        if dico is None:
            mean_cosine = -1e9
        else:
            mean_cosine = (X_Z[dico[:dico_max_size, 0]] * Y_Z[dico[:dico_max_size, 1]]).sum(1).mean()
            print("Mean cosine (%s method, %s build, %i max size): %.5f"
                        % (params.dico_method, params.dico_build, dico_max_size, mean_cosine))

        with io.open('dict-wacky/seed-{}-{}-{}-{}.dict'.format(params.seed, params.norm_embeddings ,params.src_lang, params.tgt_lang), 'w', encoding='utf-8',
                     newline='\n') as f:
            for item in dico:
                f.write('{} {}\n'.format(src_dico[0][item[0]], tgt_dico[0][item[1]]))
        '''
        export_embeddings(X_Z, Y_Z, src_dico[0], tgt_dico[0], params)
    else:
        print("Invalid flag!")