OpenAttack
32 строки · 903.0 Байт
1'''
2This example code shows how to design a customized attack evaluation metric.
3'''
4import OpenAttack5import datasets6
7class SentenceLength(OpenAttack.AttackMetric): # extend the AttackMetric class8# name of the metric9NAME = "Input Length"10
11def after_attack(self, input, adversarial_sample):12# returns the length of input sentence13return len(input["x"].split(" "))14
15def dataset_mapping(x):16return {17"x": x["sentence"],18"y": 1 if x["label"] > 0.5 else 0,19}20
21def main():22victim = OpenAttack.loadVictim("BERT.SST")23dataset = datasets.load_dataset("sst", split="train[:20]").map(function=dataset_mapping)24
25attacker = OpenAttack.attackers.PWWSAttacker()26attack_eval = OpenAttack.AttackEval(attacker, victim, metrics=[27SentenceLength()28])29attack_eval.eval(dataset, visualize=True)30
31if __name__ == "__main__":32main()