fdd-defense

Форк
0
23 строки · 697.0 Байт
1
import numpy as np
2
from fdd_defense.attackers.base import BaseAttacker
3

4

5
class PGDAttacker(BaseAttacker):
6
    def __init__(
7
            self, 
8
            model: object, 
9
            eps: float,
10
            num_steps: int=10,
11
        ):
12
        super().__init__(model, eps)
13
        self.alpha = self.eps / num_steps
14
        self.num_steps = num_steps
15
    
16
    def attack(self, ts, label):
17
        super().attack(ts, label)
18
        delta = np.zeros_like(ts)
19
        for _ in range(self.num_steps):
20
            grad = self.model.get_grad(ts + delta, label)
21
            delta += self.alpha * np.sign(grad)
22
            delta = np.clip(delta, a_min=-self.eps, a_max=self.eps)
23
        return ts + delta
24

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

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

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

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