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