OpenBackdoor

Форк
0
32 строки · 1.2 Кб
1
from typing import *
2
from openbackdoor.victims import Victim
3
from openbackdoor.data import get_dataloader, wrap_dataset
4
from .poisoners import load_poisoner
5
from openbackdoor.trainers import load_trainer
6
from openbackdoor.utils import evaluate_classification
7
from openbackdoor.defenders import Defender
8
from .attacker import Attacker
9
import torch
10
import torch.nn as nn
11
class SOSAttacker(Attacker):
12
    r"""
13
        Attacker for `SOS <https://aclanthology.org/2021.acl-long.431>`_
14
        
15
    """
16
    def __init__(self, **kwargs):
17
        super().__init__(**kwargs)
18

19
    def attack(self, victim: Victim, dataset: List, config: Optional[dict] = None, defender: Optional[Defender] = None):
20
        clean_model = self.train(victim, dataset)
21
        poison_dataset = self.poison(clean_model, dataset, "train")
22
        if defender is not None and defender.pre is True:
23
            # pre tune defense
24
            poison_dataset = defender.defend(data=poison_dataset)
25
        backdoored_model = self.sos_train(clean_model, poison_dataset)
26
        return backdoored_model
27
    
28
    def sos_train(self, victim: Victim, dataset: List):
29
        """
30
        sos training
31
        """
32
        return self.poison_trainer.sos_train(victim, dataset, self.metrics)
33
    
34

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.