OpenAttack
32 строки · 1.2 Кб
1'''
2This example code shows how to using multiprocessing to accelerate adversarial attacks
3'''
4import OpenAttack5import datasets6
7def dataset_mapping(x):8return {9"x": x["sentence"],10"y": 1 if x["label"] > 0.5 else 0,11}12
13
14def main():15victim = OpenAttack.loadVictim("BERT.SST")16# Victim.BiLSTM.SST is a pytorch model which is trained on Dataset.SST. It uses Glove vectors for word representation.17# The load operation returns a PytorchClassifier that can be further used for Attacker and AttackEval.18
19dataset = datasets.load_dataset("sst", split="train[:20]").map(function=dataset_mapping)20# Dataset.SST.sample is a list of 1k sentences sampled from test dataset of Dataset.SST.21
22attacker = OpenAttack.attackers.GeneticAttacker()23# After this step, we’ve initialized a GeneticAttacker and uses the default configuration during attack process.24
25attack_eval = OpenAttack.AttackEval(attacker, victim)26# DefaultAttackEval is the default implementation for AttackEval which supports seven basic metrics.27
28attack_eval.eval(dataset, visualize=True, num_workers=4)29# Using multiprocessing by specify num_workers30
31if __name__ == "__main__":32main()