Beispiel #1
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)))
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)))