def test_epoch(model, data_loader, log_interval): model.eval() test_loss = 0 correct = 0 histogram_data = {key: [] for key in range(NUMBER_OF_CLASSES)} histogram_data['all'] = [] for batch_index, (x_data_raw, target) in enumerate(data_loader): # x_data_ts = Variable(x_data_ts, volatile=True) x_data_raw = Variable(x_data_raw, volatile=True) target = Variable(target) output = model(x_data_raw) if type(output.data) == torch.cuda.DoubleTensor: output = output.cpu() test_loss += functional.binary_cross_entropy(output, target).data[0] pred = output.data.max(1)[1] target_column = target.data.max(1)[1] correct += pred.eq(target_column).sum() build_histogram(output, target_column, histogram_data) if batch_index % log_interval == 0 and batch_index > 1: LOGGER.info('Test iteration: {}, Correct count: {}'.format( batch_index, correct)) test_loss /= len(data_loader.dataset) LOGGER.info( 'Test set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(data_loader.dataset), 100. * correct / len(data_loader.dataset))) for key, value in histogram_data.items(): histogram = Histogram( value, title='Percentage of Correctly Predicted: {}'.format(key), bins=10, number_range=(0.0, 1.0), histogram_type='numbers') print(histogram.horizontal())