def _setup_attack(self):
        """
        Set up the initial parameter for each attack component.
        """
        import torch

        hue_space = (
            torch.rand(self.batch_size, device=self.device) * (self.eps_pool[0][1] - self.eps_pool[0][0])
            + self.eps_pool[0][0]
        )
        sat_space = (
            torch.rand(self.batch_size, device=self.device) * (self.eps_pool[1][1] - self.eps_pool[1][0])
            + self.eps_pool[1][0]
        )
        rot_space = (
            torch.rand(self.batch_size, device=self.device) * (self.eps_pool[2][1] - self.eps_pool[2][0])
            + self.eps_pool[2][0]
        )
        bri_space = (
            torch.rand(self.batch_size, device=self.device) * (self.eps_pool[3][1] - self.eps_pool[3][0])
            + self.eps_pool[3][0]
        )
        con_space = (
            torch.rand(self.batch_size, device=self.device) * (self.eps_pool[4][1] - self.eps_pool[4][0])
            + self.eps_pool[4][0]
        )
        pgd_space = 0.001 * torch.randn([self.batch_size, 3, 32, 32], device=self.device)

        self.eps_space = [self.eps_pool[i] for i in self.enabled_attack]
        self.adv_val_space = [
            [hue_space, sat_space, rot_space, bri_space, con_space, pgd_space][i] for i in self.enabled_attack
        ]

        Set up the initial parameter for each attack component.
        
art/attacks/evasion/composite_adversarial_attack.py