簡體   English   中英

無法使用經過訓練的 NSGA-Net PyTorch 模型生成對抗樣本

[英]Failed to generate adversarial examples using trained NSGA-Net PyTorch models

我使用 NSGA-Net 神經架構搜索來生成和訓練幾種架構。 我正在嘗試使用經過訓練的 PyTorch 模型生成 PGD 對抗性示例。 我嘗試同時使用 Adversarial Robustness Toolbox 1.3 (ART) 和 torchattacks 2.4,但我得到了同樣的錯誤。

這幾行代碼描述了我的代碼的主要功能以及我在這里想要實現的目標:

# net is my trained NSGA-Net PyTorch model

# Defining PGA attack

pgd_attack = PGD(net, eps=4 / 255, alpha=2 / 255, steps=3)

# Creating adversarial examples using validation data and the defined PGD attack

for images, labels in valid_data:
    images = pgd_attack(images, labels).cuda()
    outputs = net(images)


因此,錯誤通常如下所示:

Traceback (most recent call last):
  File "torch-attacks.py", line 296, in <module>
    main()
  File "torch-attacks.py", line 254, in main
    images = pgd_attack(images, labels).cuda()
  File "\Anaconda3\envs\GPU\lib\site-packages\torchattacks\attack.py", line 114, in __call__
    images = self.forward(*input, **kwargs)
  File "\Anaconda3\envs\GPU\lib\site-packages\torchattacks\attacks\pgd.py", line 57, in forward
    outputs = self.model(adv_images)
  File "\envs\GPU\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "\codes\NSGA\nsga-net\models\macro_models.py", line 79, in forward
    x = self.gap(self.model(x))
  File "\Anaconda3\envs\GPU\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "\Anaconda3\envs\GPU\lib\site-packages\torch\nn\modules\container.py", line 100, in forward
    input = module(input)
  File "\Anaconda3\envs\GPU\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "\codes\NSGA\nsga-net\models\macro_decoder.py", line 978, in forward
    x = self.first_conv(x)
  File "\Anaconda3\envs\GPU\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "\Anaconda3\envs\GPU\lib\site-packages\torch\nn\modules\conv.py", line 345, in forward
    return self.conv2d_forward(input, self.weight)
  File "\Anaconda3\envs\GPU\lib\site-packages\torch\nn\modules\conv.py", line 342, in conv2d_forward
    self.padding, self.dilation, self.groups)
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #2 'weight' in call to _thnn_conv2d_forward

我已經使用了與簡單的 PyTorch model 相同的代碼並且它工作但我使用的是 NSGA-Net 所以我沒有自己設計 model。 我還嘗試在 model 和輸入上使用.float() ,但仍然遇到相同的錯誤。

請記住,我只能訪問以下文件:

  • 火炬攻擊.py
  • 宏模型.py
  • 宏解碼器.py

您應該將images轉換為所需的類型(在您的情況下為images.float() )。 標簽不得轉換為任何浮動類型。 它們可以是intlong張量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM