from fastai.gen_doc.nbdoc import * from fastai import * show_doc(accuracy) show_doc(accuracy_thresh, doc_string=False) show_doc(dice) show_doc(fbeta) show_doc(exp_rmspe) class AverageMetric(Callback): def __init__(self, func): self.func, self.name = func, func.__name__ def on_epoch_begin(self, **kwargs): self.val, self.count = 0.,0 def on_batch_end(self, last_output, last_target, train, **kwargs): self.count += last_target.size(0) self.val += last_target.size(0) * self.func(last_output, last_target).detach().item() def on_epoch_end(self, **kwargs): self.metric = self.val/self.count class Precision(Callback): def on_epoch_begin(self, **kwargs): self.correct, self.total = 0, 0 def on_batch_end(self, last_output, last_target, **kwargs): preds = last_output.argmax(1) self.correct += ((preds==0) * (last_target==0)).float().sum() self.total += (preds==0).float().sum() def on_epoch_end(self, **kwargs): self.metric = self.correct/self.total