Ejemplo n.º 1
0
    evaluate(model,data_loader_test,model_name=config.model,ty='test',verbose=True,log=True)
    exit(0)

model = Transformer(p.vocab)
print("MODEL USED",config.model)
print("TRAINABLE PARAMETERS",count_parameters(model))

best_ppl = 1000
cnt = 0
for e in range(config.epochs):
    print("Epoch", e)
    p, l = [],[]
    pbar = tqdm(enumerate(data_loader_tr),total=len(data_loader_tr))
    for i, d in pbar:
        torch.cuda.empty_cache()
        loss, ppl, _ = model.train_one_batch(d)
        l.append(loss)
        p.append(ppl)
        pbar.set_description("loss:{:.4f} ppl:{:.1f}".format(np.mean(l),np.mean(p)))
        #pbar.set_description("loss:{:.4f} ppl:{:.1f}".format(loss,ppl))
        torch.cuda.empty_cache()
        #break
        
    loss,ppl_val,ent_b,bleu_score_b = evaluate(model,data_loader_val,model_name=config.model,ty="valid", verbose=True)
    if(ppl_val <= best_ppl):
        best_ppl = ppl_val
        cnt = 0
        model.save_model(best_ppl,e,0,0,bleu_score_b,ent_b)
    else: 
        cnt += 1
    if(cnt > 10): break
Ejemplo n.º 2
0
            xavier_uniform_(p)
print("MODEL USED", config.model)
print("TRAINABLE PARAMETERS", count_parameters(model))

check_iter = 2000
try:
    if (config.USE_CUDA):
        model.cuda()
    model = model.train()
    best_ppl = 1000
    patient = 0
    writer = SummaryWriter(log_dir=config.save_path)
    weights_best = deepcopy(model.state_dict())
    data_iter = make_infinite(data_loader_tra)
    for n_iter in tqdm(range(1000000)):
        loss, ppl, bce, acc = model.train_one_batch(next(data_iter), n_iter)
        writer.add_scalars('loss', {'loss_train': loss}, n_iter)
        writer.add_scalars('ppl', {'ppl_train': ppl}, n_iter)
        writer.add_scalars('bce', {'bce_train': bce}, n_iter)
        writer.add_scalars('accuracy', {'acc_train': acc}, n_iter)
        if (config.noam):
            writer.add_scalars('lr', {'learning_rata': model.optimizer._rate},
                               n_iter)

        if ((n_iter + 1) % check_iter == 0):
            model = model.eval()
            model.epoch = n_iter
            model.__id__logger = 0
            loss_val, ppl_val, bce_val, acc_val, bleu_score_g, bleu_score_b = evaluate(
                model, data_loader_val, ty="valid", max_dec_step=50)
            writer.add_scalars('loss', {'loss_valid': loss_val}, n_iter)