def _eval(
        self,
        x: "torch.Tensor",
        x_adv: "torch.Tensor",
        mask: "torch.Tensor",
        target_label: np.ndarray,
        y_onehot: "torch.Tensor",
        xforms: list[tuple[float, float, float, int, float, float, float, float, float]],
        clip_min: float,
        clip_max: float,
        pts: np.ndarray | None,
    ) -> float:
        """
        Compute transform-robustness.

        :param x: Original image.
        :param x_adv: Attacked image.
        :param mask: The mask.
        :param target_label: The target label.
        :param y_onehot: The target label in one hot form.
        :param xforms: Ths list of transformation parameters.
        :param clip_min: Minimum value of an example.
        :param clip_max: Maximum value of an example.
        :param pts: Optional. A set of points that will set the crop size in the perspective transform.
        :return: Transform-robustness of the attack.
        """
        import torch

        successes = 0
        for xform in xforms:
            with torch.no_grad():
                if len(x_adv.shape) == 3:
                    x_adv = x_adv.unsqueeze(0)
                transformed_x_adv = transform_wb(x, x_adv, mask, xform, self.net_size, clip_min, clip_max, pts)
                logits, _ = self.estimator._predict_framework(transformed_x_adv.to(self.estimator.device), y_onehot)
                success = int(logits.argmax(dim=1).detach().cpu().numpy()[0] == target_label)
                successes += success
        return successes / len(xforms)

        Compute transform-robustness.

        :param x: Original image.
        :param x_adv: Attacked image.
        :param mask: The mask.
        :param target_label: The target label.
        :param y_onehot: The target label in one hot form.
        :param xforms: Ths list of transformation parameters.
        :param clip_min: Minimum value of an example.
        :param clip_max: Maximum value of an example.
        :param pts: Optional. A set of points that will set the crop size in the perspective transform.
        :return: Transform-robustness of the attack.
        
art/attacks/evasion/graphite/graphite_whitebox_pytorch.py