def main()

in training/language_modeling.py [0:0]


def main(params):
    # Create logger and print params (very useful for debugging)
    logger = create_logger(params)

    trainloader, n_data = get_dataset(params, split='train', is_train=True)
    validloader, _ = get_dataset(params, split='valid', is_train=False)

    model = build_model(params)
    model.cuda()

    trainer = Trainer(model, params, n_data=n_data)
    trainer.reload_checkpoint()

    # evaluator = Evaluator(trainer, params)

    # evaluation
    # if params.eval_only:
    #     scores = evaluator.run_all_evals(trainer, evals=['classif'], data_loader=validloader)

    #     for k, v in scores.items():
    #         logger.info('%s -> %.6f' % (k, v))
    #     logger.info("__log__:%s" % json.dumps(scores))
    #     exit()


    # training
    for epoch in range(trainer.epoch, params.epochs):

        # update epoch / sampler / learning rate
        trainer.epoch = epoch
        logger.info("============ Starting epoch %i ... ============" % trainer.epoch)

        # train
        for (idx, sentence) in trainloader:
            trainer.lm_step(idx, sentence)
            trainer.end_step()

        logger.info("============ End of epoch %i ============" % trainer.epoch)

        # evaluate classification accuracy
        # scores = evaluator.run_all_evals(trainer, evals=['classif'], data_loader=validloader)

        scores = {}
        for name, val in trainer.get_scores().items():
            scores[name] = val

        # print / JSON log
        for k, v in scores.items():
            logger.info('%s -> %.6f' % (k, v))
        logger.info("__log__:%s" % json.dumps(scores))

        # end of epoch
        trainer.end_epoch(scores)