in src/bert_train.py [0:0]
def validate(self, loss_function, model_network, val_iter):
# switch model to evaluation mode
model_network.eval()
# total loss
val_loss = 0
actuals = torch.tensor([], dtype=torch.long).to(device=self._default_device)
predicted = torch.tensor([], dtype=torch.long).to(device=self._default_device)
with torch.no_grad():
for idx, val in enumerate(val_iter):
val_batch_idx = val[0].to(device=self._default_device)
val_y = val[1].to(device=self._default_device)
pred_batch_y = model_network(val_batch_idx)[0]
# compute loss
val_loss += loss_function(pred_batch_y, val_y).item()
actuals = torch.cat([actuals, val_y])
pred_flat = torch.max(pred_batch_y, dim=1)[1].view(-1)
predicted = torch.cat([predicted, pred_flat])
# Average loss
val_loss = val_loss / len(actuals)
return actuals.cpu().tolist(), predicted.cpu().tolist(), val_loss