Beispiel #1
0
def test_average_precision(pos_label):
    avg_prec = AveragePrecision(pos_label=pos_label)
    assert avg_prec.name == 'AP'

    pred, target = torch.tensor([1, 2, 3, 4]), torch.tensor([1, 2, 0, 1])
    ap = avg_prec(pred=pred, target=target, sample_weight=[0.1, 0.2, 0.3, 0.4])
    assert isinstance(ap, torch.Tensor)
Beispiel #2
0
 def prepare(self):
     (self.train_transforms,
      self.infer_transforms) = self._build_transforms(
          **self.config.transforms)
     (
         self._train_dataloader,
         self._val_dataloader,
         self._test_dataloader,
     ) = self._build_dataloaders(**self.config.data)
     num_slots = len(
         self.train_transforms["utterance&slots"][0].vocab.idx.keys())
     num_intents = len(self.train_transforms["intent"][0].vocab.idx.keys())
     add_feat_len = 0
     if self.config.model.use_intent:
         add_feat_len += num_intents
     self.joint_model = build_intent_joint_model(
         **self.config.model,
         num_slots=num_slots,
         num_intents=num_intents,
         vocab=self.train_transforms["utterance"][1].vocab,
         add_feat_len=add_feat_len,
     )
     self.slot_accuracy_metric = Accuracy(num_classes=num_slots)
     self.doc_accuracy_metric = Accuracy(num_classes=num_intents)
     self.precision_metric = AveragePrecision()
     self.slot_f1_metric = F1(num_classes=num_slots)
     self.doc_f1_metric = F1(num_classes=num_intents)
     self.optimizer = FairSeqAdam(self.joint_model.parameters(),
                                  **self.config.optimizer)