Пример #1
0
    def predict(self, X: np.ndarray, batch_size: int = 64, return_instance_score: bool = True) \
            -> Dict[Dict[str, str], Dict[str, np.ndarray]]:
        """
        Predict whether instances are adversarial instances or not.

        Parameters
        ----------
        X
            Batch of instances.
        batch_size
            Batch size used when computing scores.
        return_instance_score
            Whether to return instance level adversarial scores.

        Returns
        -------
        Dictionary containing 'meta' and 'data' dictionaries.
        'meta' has the model's metadata.
        'data' contains the adversarial predictions and instance level adversarial scores.
        """
        adv_score = self.score(X, batch_size=batch_size)

        # values above threshold are adversarial
        adv_pred = (adv_score > self.threshold).astype(int)  # type: ignore

        # populate output dict
        ad = adversarial_prediction_dict()
        ad['meta'] = self.meta
        ad['data']['is_adversarial'] = adv_pred
        if return_instance_score:
            ad['data']['instance_score'] = adv_score
        return ad
Пример #2
0
 def predict(
     self,
     X: np.ndarray,
     batch_size: int = int(1e10),
     return_instance_score: bool = True,
 ) -> Dict[Dict[str, str], Dict[str, np.ndarray]]:
     assert return_instance_score == self.expected_return_instance_score
     ad = adversarial_prediction_dict()
     ad["data"]["is_adversarial"] = self.expected_is_adversarial
     return ad