예제 #1
0
optimizer = optim.Adam(model.parameters())

start_time = time.time()

for epoch in range(start_epoch, epochs + 1):

    train_loss, train_acc = train(epoch, model, optimizer, train_criterion,
                                  train_loader, device)
    history["train_loss"].append(train_loss)
    history["train_acc"].append(train_acc)

    print('epoch: ', epoch)
    print('{}: loss: {:.4f} acc: {:.4f}'.format('training', train_loss,
                                                train_acc))

    valid_loss, valid_acc, valid_preds_list, valid_truelabels_list, valid_probas_list, valid_auc_score = validation(
        epoch, model, optimizer, valid_criterion, valid_loader, device)
    history["valid_loss"].append(valid_loss)
    history["valid_acc"].append(valid_acc)
    history["valid_preds_list"].append(valid_preds_list)
    history["valid_truelabels_list"].append(valid_truelabels_list)
    history["valid_probas_list"].append(valid_probas_list)
    history["valid_auc_score"].append(valid_auc_score)

    print('{}: loss: {:.4f} acc: {:.4f} auc: {:.4f}'.format(
        'validation', valid_loss, valid_acc, valid_auc_score))
    print()

    # save models
    is_best = valid_loss < best_val_loss
    best_val_loss = min(valid_loss, best_val_loss)
history = {  # "train_loss":[], "train_acc":[],
    "test_loss": [],
    "test_acc": [],
    "test_preds_list": [],
    "test_truelabels_list": [],
    "test_probas_list": [],
    "test_auc_score": []
}
optimizer = optim.Adam(model.parameters())

start_time = time.time()

for epoch in range(start_epoch, epochs + 1):

    test_loss, test_acc, test_preds_list, test_truelabels_list, test_probas_list, test_auc_score = validation(
        epoch, model, optimizer, test_criterion, test_loader, device)
    history["test_loss"].append(test_loss)
    history["test_acc"].append(test_acc)
    history["test_preds_list"].append(test_preds_list)
    history["test_truelabels_list"].append(test_truelabels_list)
    history["test_probas_list"].append(test_probas_list)
    history["test_auc_score"].append(test_auc_score)

    print('{}: loss: {:.4f} acc: {:.4f} auc: {:.4f}'.format(
        'test', test_loss, test_acc, test_auc_score))
    print()

print('time elapsed:', time.time() - start_time)

# save results
with open("history_googlenet_test.pkl", "wb") as fout:
예제 #3
0
def train_valid(optimizer = optim.Adam(model.parameters()), epochs = 20, model = model,
                train_criterion = nn.CrossEntropyLoss(), train_loader = train_loader,
                valid_criterion = nn.CrossEntropyLoss(), valid_loader = valid_loader,
                device = device):

    start_epoch = 1
    #or: best_val_acc = 0
    best_val_loss = np.inf

    history = {"train_loss":[], "train_acc":[],
                "valid_loss":[], "valid_acc":[], "valid_preds_list":[],
                "valid_truelabels_list":[], "valid_probas_list":[], "valid_auc_score":[]}

    start_time = time.time()

    for epoch in range(start_epoch, epochs + 1):

        train_loss, train_acc = train(epoch, model, optimizer, train_criterion, train_loader, device)
        history["train_loss"].append(train_loss)
        history["train_acc"].append(train_acc)

        print('epoch: ', epoch)
        print('{}: loss: {:.4f} acc: {:.4f}'.format('training', train_loss, train_acc))

        valid_loss, valid_acc, valid_preds_list, valid_truelabels_list, valid_probas_list, valid_auc_score = validation(epoch, model, optimizer, valid_criterion, valid_loader, device)
        history["valid_loss"].append(valid_loss)
        history["valid_acc"].append(valid_acc)
        history["valid_preds_list"].append(valid_preds_list)
        history["valid_truelabels_list"].append(valid_truelabels_list)
        history["valid_probas_list"].append(valid_probas_list)
        history["valid_auc_score"].append(valid_auc_score)

        print('{}: loss: {:.4f} acc: {:.4f} auc: {:.4f}'.format('validation', valid_loss, valid_acc, valid_auc_score))
        print()

        # save models(use valid loss as best model criterion, please change
        # criterion here if needed(eg. valid acc)
        is_best = valid_loss < best_val_loss
        best_val_loss = min(valid_loss, best_val_loss)

        if is_best:
            # please change model file path here
            best_model_file = "best_models/best_model.pth"
            torch.save(model.state_dict(), best_model_file)

        # save model from every training epoch
        # can be deleted if do not need this one, or adapt it to save 5th, 10th, 15th ...models
        model_file = "models/resnet152_model_" + str(epoch) + ".pth"

        torch.save(model.state_dict(), model_file)

        # save training/validation results
        with open("history.pkl", "wb") as fout:
            pickle.dump(history, fout)

    print('time elapsed:', time.time() - start_time)

    return history
예제 #4
0
for epoch in range(start_epoch, epochs + 1):

    train_loss, train_acc = train(epoch, model, optimizer, train_criterion,
                                  train_loader, device)
    history["train_loss"].append(train_loss)
    history["train_acc"].append(train_acc)

    print('epoch: ', epoch)
    print('{}: loss: {:.4f} acc: {:.4f}'.format('training', train_loss,
                                                train_acc))

    valid_loss, valid_acc, valid_preds_list, valid_truelabels_list, valid_probas_list = validation(
        epoch,
        model,
        optimizer,
        valid_criterion,
        valid_loader,
        device,
        multiclass=True)
    history["valid_loss"].append(valid_loss)
    history["valid_acc"].append(valid_acc)
    history["valid_preds_list"].append(valid_preds_list)
    history["valid_truelabels_list"].append(valid_truelabels_list)
    history["valid_probas_list"].append(valid_probas_list)
    #history["valid_auc_score"].append(valid_auc_score)

    print('{}: loss: {:.4f} acc: {:.4f} auc: {:.4f}'.format(
        'validation', valid_loss, valid_acc, valid_auc_score))
    print()

    # save models