예제 #1
0
                if args.tensorboard and (not args.debug):
                    writer.add_scalar('dev/Loss', dev_metrics.loss, dev_iters)
                    writer.add_scalar('dev/BLEU_corpus_',
                                      outputs_data['corpus_bleu'], dev_iters)

                if outputs_data['corpus_bleu'] > corpus_bleu:
                    corpus_bleu = outputs_data['corpus_bleu']

                args.logger.info('model:' + args.prefix + args.hp_str + "\n")

        if args.tensorboard and (not args.debug):
            writer.add_scalar('dev/zero_shot_BLEU', corpus_bleu0, iters)
            writer.add_scalar('dev/fine_tune_BLEU', corpus_bleu, iters)

        args.logger.info('validation done.\n')
        model.load_fast_weights(weights)  # --- comming back to normal

        # -- restart the progressbar --
        progressbar = tqdm(total=args.eval_every, desc='start training')

        if not args.debug:
            best.accumulate(corpus_bleu, iters)
            args.logger.info(
                'the best model is achieved at {},  corpus BLEU={}'.format(
                    best.i, best.corpus_bleu))

    # ----- meta-training ------- #
    model.train()
    if iters > args.maximum_steps:
        args.logger.info('reach the maximum updating steps.')
        break
예제 #2
0
    logger.info(f'Starting with HPARAMS: {hp_str}')
    model_name = args.models_dir + '/' + 'eval.' + args.prefix + hp_str

    # build the model
    model = UniversalTransformer(SRC, TRG, args)

    # logger.info(str(model))
    if args.load_from == '0':
        args.load_from = None

    if args.load_from is not None:
        with torch.cuda.device(args.gpu):
            # model.load_state_dict(torch.load(args.models_dir + '/' + args.load_from + '.pt',
            # map_location=lambda storage, loc: storage.cuda()))  # load the pretrained models.
            model.load_fast_weights(torch.load(
                args.resume_dir + '/' + args.load_from + '.pt',
                map_location=lambda storage, loc: storage.cuda()),
                                    type='meta')  # load the pretrained models.

    # use cuda
    if args.gpu > -1:
        model.cuda(args.gpu)

    # additional information
    args.__dict__.update({
        'model_name': model_name,
        'hp_str': hp_str,
        'logger': logger
    })

    # tensorboard writer
    if args.tensorboard and (not args.debug):
예제 #3
0
# ----------------------------------------------------------------------------------------------------------------- #

assert args.load_from is not None, 'load the model'

steps = 10000
while True:

    load_from = args.load_from + 'iter={}'.format(steps)
    if not os.path.exists(args.models_dir + '/' + load_from + '.pt'):
        break
    logger.info(load_from)
    with torch.cuda.device(args.gpu):
        # model.load_state_dict(torch.load(args.models_dir + '/' + args.load_from + '.pt',
        # map_location=lambda storage, loc: storage.cuda()))  # load the pretrained models.
        model.load_fast_weights(torch.load(
            args.models_dir + '/' + load_from + '.pt',
            map_location=lambda storage, loc: storage.cuda()),
                                type='meta')  # load the pretrained models.

    # if resume training
    with torch.cuda.device(args.gpu):  # very important.
        offset, opt_states = torch.load(
            args.models_dir + '/' + load_from + '.pt.states',
            map_location=lambda storage, loc: storage.cuda())

    print('offset {}'.format(offset))

    # ---- updates ------ #
    iters = offset
    eposides = 0
    tokens = 0
    time0 = time.time()
예제 #4
0
                                  outputs_data['corpus_bleu'], dev_iters)

            if outputs_data['corpus_gleu'] > corpus_gleu:
                corpus_gleu = outputs_data['corpus_gleu']

            if outputs_data['corpus_bleu'] > corpus_bleu:
                corpus_bleu = outputs_data['corpus_bleu']

            args.logger.info('model:' + args.prefix + args.hp_str + "\n")

        if args.tensorboard and (not args.debug):
            writer.add_scalar('dev/zero_shot_BLEU', corpus_bleu0, iters)
            writer.add_scalar('dev/fine_tune_BLEU', corpus_bleu, iters)

        args.logger.info('validation done.\n')
        model.load_fast_weights(weights)  # --- comming back to normal
        model.encoder.out.load_state_dict(outs)  # --- comming back to normal

        if not args.debug:
            best.accumulate(corpus_bleu, corpus_gleu, iters)
            args.logger.info(
                'the best model is achieved at {}, corpus GLEU={}, corpus BLEU={}'
                .format(best.i, best.corpus_gleu, best.corpus_bleu))

    # ----- meta-training ------- #
    model.train()
    if iters > args.maximum_steps:
        args.logger.info('reach the maximum updating steps.')
        break

    # ----- inner-loop ------