Generate attack dataset
| 143 | |
| 144 | |
| 145 | class AttackDataset(): |
| 146 | """ |
| 147 | Generate attack dataset |
| 148 | """ |
| 149 | |
| 150 | def __init__(self, args, attack_type, target_model, target_train_dataloader, target_test_dataloader, layers, obfuscator): |
| 151 | self.args = args |
| 152 | self.attack_type = attack_type |
| 153 | self.target_model_parser = ModelParser(args, target_model) |
| 154 | |
| 155 | self.target_train_info = self.target_model_parser.parse_info_whitebox( |
| 156 | target_train_dataloader, layers, obfuscator) |
| 157 | self.target_test_info = self.target_model_parser.parse_info_whitebox( |
| 158 | target_test_dataloader, layers, obfuscator) |
| 159 | |
| 160 | # get attack dataset |
| 161 | self.attack_train_dataset, self.attack_test_dataset = self.generate_attack_dataset() |
| 162 | |
| 163 | def parse_info(self, info): |
| 164 | original_labels = info["targets"] |
| 165 | aux_labels = info["aux_targets"] |
| 166 | data = info["embeddings"] |
| 167 | |
| 168 | return data, aux_labels, original_labels |
| 169 | |
| 170 | def generate_attack_dataset(self): |
| 171 | train_data, train_aux_labels, train_original_labels = self.parse_info( |
| 172 | self.target_train_info) |
| 173 | test_data, test_aux_labels, test_original_labels = self.parse_info( |
| 174 | self.target_test_info) |
| 175 | |
| 176 | attack_train_dataset = torch.utils.data.TensorDataset( |
| 177 | torch.from_numpy(np.array(train_data, dtype='f')), |
| 178 | torch.from_numpy(np.array(train_aux_labels)).type(torch.long), |
| 179 | torch.from_numpy(np.array(train_original_labels)).type(torch.long), |
| 180 | ) |
| 181 | |
| 182 | attack_test_dataset = torch.utils.data.TensorDataset( |
| 183 | torch.from_numpy(np.array(test_data, dtype='f')), |
| 184 | torch.from_numpy(np.array(test_aux_labels)).type(torch.long), |
| 185 | torch.from_numpy(np.array(test_original_labels)).type(torch.long), |
| 186 | ) |
| 187 | |
| 188 | return attack_train_dataset, attack_test_dataset |
| 189 | |
| 190 | |
| 191 | class AttributeInferenceAttack(abc.ABC): |