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)