关于联邦学习的后门攻击

在您的这个fork中
https://github.com/MrWater98/backdoor_federated_learning
其中联邦学习的数据集投毒部分

range_no_id = list(range(50000))
for image in self.params['poison_images'] + self.params['poison_images_test']:
  if image in range_no_id:
    range_no_id.remove(image)

上面这段代码在 the backdoor_federated_learning/image_helper.py. 的103行。
为什么这一段是将数据集中具有特定性质的图像移除出去呢?

在training.py中,

 for batch_id, batch in enumerate(data_iterator):

                        if helper.params['type'] == 'image':
                            for i in range(helper.params['poisoning_per_batch']):
                                for pos, image in enumerate(helper.params['poison_images']):
                                    poison_pos = len(helper.params['poison_images'])*i + pos
                                    #random.randint(0, len(batch))
                                    batch[0][poison_pos] = helper.train_dataset[image][0]
                                    batch[0][poison_pos].add_(torch.FloatTensor(batch[0][poison_pos].shape).normal_(0, helper.params['noise_level']))


                                    batch[1][poison_pos] = helper.params['poison_label_swap']

                        data, targets = helper.get_batch(poisoned_data, batch, False)

上面这段代码在 backdoor_federated_learning/training.py 的166行。
可以看到这段代码是在修改投毒数据的标签,如果已经将data_iterator中的特定数据移除还怎么修改其标签呢?

感谢您的解答