コード例 #1
0
def test_abs(args, device_id, pt, step):
    """ Implements testing process (meta / non-memta)
    Arguments:
        device_id (int) : the GPU id to be used
        pt() : checkpoint model
        step (int) : checkpoint step
    Process:
        - load checkpoint
        - prepare dataloader class
        - prepare model class
        - prepare predictor
        - predictor.translate()
    """
    device = "cpu" if args.visible_gpus == '-1' else "cuda"
    logger.info('Device ID %d', device_id)
    logger.info('Device %s', device)

    # Load chekcpoint
    if (pt != ''):
        test_from = pt
    else:
        test_from = args.test_from
    logger.info('Loading checkpoint from %s' % test_from)
    checkpoint = torch.load(test_from,
                            map_location=lambda storage, loc: storage)
    opt = vars(checkpoint['opt'])
    for k in opt.keys():
        if (k in model_flags):
            setattr(args, k, opt[k])

    # Prepare dataloader
    test_iter = data_loader.Dataloader(args,
                                       load_dataset(args,
                                                    'test',
                                                    shuffle=False),
                                       args.test_batch_size,
                                       device,
                                       shuffle=False,
                                       is_test=True)
    # Prepare model
    if (args.meta_mode):
        model = MTLAbsSummarizer(args, device, checkpoint)
    else:
        model = AbsSummarizer(args, device, checkpoint)
    model.eval()

    # Prepare predictor
    tokenizer = BertTokenizer.from_pretrained('bert-base-uncased',
                                              do_lower_case=True,
                                              cache_dir=args.temp_dir)
    symbols = {
        'BOS': tokenizer.vocab['[unused0]'],
        'EOS': tokenizer.vocab['[unused1]'],
        'PAD': tokenizer.vocab['[PAD]'],
        'EOQ': tokenizer.vocab['[unused2]']
    }

    predictor = build_predictor(args, tokenizer, symbols, model, logger)
    predictor.translate(test_iter, step)  # long time
コード例 #2
0
 def train_iter_fct():
     return data_loader.Dataloader(args,
                                   load_dataset(args,
                                                'train',
                                                shuffle=True),
                                   args.batch_size,
                                   device,
                                   shuffle=True,
                                   is_test=False)
コード例 #3
0
def test_text_abs(args, device_id, pt, step):
    device = "cpu" if args.visible_gpus == '-1' else "cuda"
    if (pt != ''):
        test_from = pt
    else:
        test_from = args.test_from
    logger.info('Loading checkpoint from %s' % test_from)

    checkpoint = torch.load(test_from,
                            map_location=lambda storage, loc: storage)
    opt = vars(checkpoint['opt'])
    for k in opt.keys():
        if (k in model_flags):
            setattr(args, k, opt[k])
    print(args)

    model = AbsSummarizer(args, device, checkpoint)
    model.eval()

    test_iter = data_loader.Dataloader(args,
                                       load_dataset(args,
                                                    'test',
                                                    shuffle=False),
                                       args.test_batch_size,
                                       device,
                                       shuffle=False,
                                       is_test=True)
    tokenizer = BertTokenizer.from_pretrained('bert-base-uncased',
                                              do_lower_case=True,
                                              cache_dir=args.temp_dir)
    symbols = {
        'BOS': tokenizer.vocab['[unused0]'],
        'EOS': tokenizer.vocab['[unused1]'],
        'PAD': tokenizer.vocab['[PAD]'],
        'EOQ': tokenizer.vocab['[unused2]']
    }
    predictor = build_predictor(args, tokenizer, symbols, model, logger)
    predictor.translate(test_iter, step)
コード例 #4
0
def validate(args, device_id, pt, step):
    ''' Implements validation process (meta / non-memta)
    Arguments:
        device_id (int) : the GPU id to be used
        pt() : checkpoint model
        step (int) : checkpoint step
    Process:
        - load checkpoint
        - prepare dataloader class
        - prepare model class
        - prepare loss func, which return loss class
        - prepare trainer
        - trainer.validate()
    Meta vs Normal
        - MetaDataloader      vs Dataloader
        - load_dataset        vs load_meta_dataset
        - MTLAbsSummarizer    vs AbsSummarizer
        - build_MTLtrainer    vs MTLTrainer
    '''
    device = "cpu" if args.visible_gpus == '-1' else "cuda"
    logger.info('Device ID %d' % device_id)
    logger.info('Device %s' % device)

    # Fix random seed to control experiement
    torch.manual_seed(args.seed)
    random.seed(args.seed)
    torch.backends.cudnn.deterministic = True
    if device_id >= 0:
        torch.cuda.set_device(device_id)
        torch.cuda.manual_seed(args.seed)

    # Load checkpoint ard args
    if (pt != ''):
        test_from = pt
    else:
        test_from = args.test_from
    logger.info('Loading checkpoint from %s' % test_from)
    checkpoint = torch.load(test_from,
                            map_location=lambda storage, loc: storage)
    opt = vars(checkpoint['opt'])  # which is self.args
    for k in opt.keys():
        if (k in model_flags):
            setattr(args, k, opt[k])

    # Prepare dataloader
    if (args.meta_mode):

        def valid_iter_fct():
            return data_loader.MetaDataloader(args,
                                              load_meta_dataset(args,
                                                                'valid',
                                                                shuffle=True),
                                              args.batch_size,
                                              device,
                                              shuffle=True,
                                              is_test=False)

    else:
        valid_iter = data_loader.Dataloader(args,
                                            load_dataset(args,
                                                         'valid',
                                                         shuffle=False),
                                            args.batch_size,
                                            device,
                                            shuffle=False,
                                            is_test=False)

    # Prepare model
    if (args.meta_mode):
        model = MTLAbsSummarizer(args, device, checkpoint)
    else:
        model = AbsSummarizer(args, device, checkpoint)
    #model.eval()

    # Prepare optimizer for inner loop
    # The optimizer for each task is seperated
    if (args.meta_mode):
        optims_inner = []
        for i in range(args.num_task):
            if (args.sep_optim):
                optim_bert_inner = model_builder.build_optim_bert_inner(
                    args, model, checkpoint, 'maml')
                optim_dec_inner = model_builder.build_optim_dec_inner(
                    args, model, checkpoint, 'maml')
                optims_inner.append([optim_bert_inner, optim_dec_inner])
            else:
                self.optims_inner.append([
                    model_builder.build_optim_inner(args, model, checkpoint,
                                                    'maml')
                ])

    # Prepare optimizer (not actually used, but get the step information)
    if (args.sep_optim):
        optim_bert = model_builder.build_optim_bert(args, model, checkpoint)
        optim_dec = model_builder.build_optim_dec(args, model, checkpoint)
        optim = [optim_bert, optim_dec]
    else:
        optim = [model_builder.build_optim(args, model, checkpoint)]

    # Prepare loss
    tokenizer = BertTokenizer.from_pretrained('bert-base-uncased',
                                              do_lower_case=True,
                                              cache_dir=args.temp_dir)
    symbols = {
        'BOS': tokenizer.vocab['[unused0]'],
        'EOS': tokenizer.vocab['[unused1]'],
        'PAD': tokenizer.vocab['[PAD]'],
        'EOQ': tokenizer.vocab['[unused2]']
    }

    # Prepare loss computation
    valid_loss = abs_loss(model.generator,
                          symbols,
                          model.vocab_size,
                          device,
                          train=False)

    # Prepare trainer and perform validation
    if (args.meta_mode):
        trainer = build_MTLtrainer(args, device_id, model, optim, optims_inner,
                                   valid_loss)
        stats = trainer.validate(valid_iter_fct, step)
    else:
        trainer = build_trainer(args, device_id, model, None, valid_loss)
        stats = trainer.validate(valid_iter, step)

    return stats.xent()
コード例 #5
0
from data.data_loader import load_dataset

# Training settings
eval_iter = 10
seed = 0
gpu = 0
outf = "test_sde"
droprate = 0.1
batch_size = 512
target_scale = 10.939756
Iter_test = 100

tf.random.set_seed(seed)


X_train, y_train, X_test, y_test = load_dataset("MSD")

in_test_ds = (
    tf.data.Dataset.from_tensor_slices((X_train, y_train))
    .batch(batch_size)
    .prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
)

X_out = load_dataset("boston")


path = "sde_net.h5"
model = tf.keras.models.load_model(path, compile=False)


def mse(y, mean):
コード例 #6
0
ファイル: main.py プロジェクト: khaledbenag/SDE-Net
import tensorflow_addons as tfa
from warnings import filterwarnings

filterwarnings("ignore")
epochs = 2
lr = 1e-4
lr2 = 0.01
seed = 0
batch_size = 128
target_scale = 10.939756
# Data
print("==> Preparing data..")

tf.random.set_seed(seed)

X_train, y_train, X_test, y_test = data_loader.load_dataset("MSD")

train_ds = (tf.data.Dataset.from_tensor_slices(
    (X_train, y_train)).batch(batch_size).prefetch(
        buffer_size=tf.data.experimental.AUTOTUNE))

test_ds = (tf.data.Dataset.from_tensor_slices(
    (X_train, y_train)).batch(batch_size).prefetch(
        buffer_size=tf.data.experimental.AUTOTUNE))

# Model
print("==> Building model..")
model = SDENet(4)

real_label = 0  # training data
fake_label = 1  # out-of-distribution data