def _process_targets()

in crypten/nn/privacy/dp_split.py [0:0]


    def _process_targets(self, targets):
        """Encrypts targets and RR to targets if necessary"""
        if self.rr_prob is not None:
            flip_probs = torch.tensor(self.rr_prob).expand(targets.size())

        # Apply appropriate RR-protocol and encrypt targets if necessary
        if self.rr_prob is not None:
            flip_probs = torch.tensor(self.rr_prob).expand(targets.size())

        if crypten.is_encrypted_tensor(targets):
            if self.rr_prob is not None:
                flip_mask = crypten.bernoulli(flip_probs)
                targets = targets + flip_probs - 2 * flip_mask * targets
            targets_enc = targets
        else:
            # Label provider adds RR label flips if they are plaintext
            if self.rr_prob is not None and self.is_label_src():
                flip_mask = flip_probs.bernoulli()
                targets += flip_mask - 2 * targets * flip_mask

            # Encrypt targets:
            targets_enc = crypten.cryptensor(targets, src=self.label_src)

        return targets_enc