def run_epoch()

in sagemaker/source/train.py [0:0]


def run_epoch(net, dl, optimizer, critereon, is_train):
    if is_train:
        net.train()
    else:
        net.eval()
    total_loss = 0.0
    total_acc = 0.0
    total_auc = 0.0
    N = 0
    for data, label in dl:
        if use_cuda:
            data = data.to(device).float()
            label = label.to(device).long()
        else:
            data = data.float()
            label = label.long()

        out = net(data)
        loss = critereon(out, label)
        optimizer.zero_grad()
        if is_train:
            loss.backward()
            optimizer.step()
        total_loss += loss.item()
        predict = out.cpu().detach().numpy()[:, 1]
        total_acc += accuracy_score(label.cpu().detach().numpy(), predict>0.5)
        total_auc += roc_auc_score(label.cpu().detach().numpy(), predict)
        N += 1

    return total_loss/N, total_acc/N, total_auc/N