File size: 863 Bytes
ba80248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from sklearn.metrics import f1_score
import numpy as np

#TODO: implement as nn.Module subclass
  
def f1(y_hat, y):
  per_class_score = f1_score(y.cpu().detach().numpy().astype('int'), 
                  (sigmoid(y_hat.cpu().detach().numpy()) > 0.5).astype('int'),
                  average='samples', zero_division=1)
  return np.mean(per_class_score)

def accuracy(outputs, labels):
  # y_hat = (sigmoid(outputs.cpu().detach().numpy()).flatten() > 0.5).astype('int')
  # y = labels.cpu().detach().numpy().flatten().astype('int')
  y_hat = (sigmoid(outputs.cpu().detach().numpy()) > 0.5).astype('int')
  y = labels.cpu().detach().numpy().astype('int')
  batch_size = y.shape[0]
  per_class_acc = np.sum(y == y_hat, axis=0) / batch_size
  # total = float(len(y))
  # correct = float(np.sum(y == y_hat))
  # return correct / total
  return np.mean(per_class_acc)