def _test(self): self.model.eval() test_loss = 0 correct = 0 idx = 0 with torch.no_grad(): for data, target in logger.iterate("Test", self.test_loader): data, target = data.to(self.device), target.to(self.device) output = self.model(data) loss = F.nll_loss(output, target, reduction='none') indexes = [idx + i for i in range(self.test_loader.batch_size)] values = list(loss.cpu().numpy()) logger.store('test_sample_loss', (indexes, values)) test_loss += float(np.sum(loss.cpu().numpy())) pred = output.argmax(dim=1, keepdim=True) values = list(pred.cpu().numpy()) logger.store('test_sample_pred', (indexes, values)) correct += pred.eq(target.view_as(pred)).sum().item() idx += self.test_loader.batch_size # Add test loss and accuracy to logger logger.store(test_loss=test_loss / len(self.test_loader.dataset)) logger.store(accuracy=correct / len(self.test_loader.dataset))
def _test(self): self.encoder.eval() with torch.no_grad(): macro_f1s = [] test_losses = [] for input_tensor, target_tensor in logger.iterate( "Test", self.test_loader): encoder_hidden = self.encoder.init_hidden( self.device).double().to(self.device) input_tensor = input_tensor.to(self.device).unsqueeze(1) target_tensor = target_tensor.to(self.device).double() encoder_output, encoder_hidden = self.encoder( input_tensor, encoder_hidden) test_loss = self.loss(encoder_output, target_tensor) macro_f1 = f1_score( y_true=target_tensor.cpu().detach().numpy().ravel(), y_pred=encoder_output.cpu().detach().to( torch.int32).numpy().ravel(), average='macro') test_losses.append(test_loss) macro_f1s.append(macro_f1) logger.store(test_loss=np.mean(test_losses)) logger.store(accuracy=np.mean(macro_f1s)) logger.write()
def _test(self): self.model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in logger.iterate("Test", self.test_loader): data, target = data.to(self.device), target.to(self.device) output = self.model(data) test_loss += F.cross_entropy(output, target, reduction='sum').item() pred = output.argmax(dim=1, keepdim=True) correct += pred.eq(target.view_as(pred)).sum().item() logger.store(test_loss=test_loss / len(self.test_loader.dataset)) logger.store(accuracy=correct / len(self.test_loader.dataset))