auto-attack icon indicating copy to clipboard operation
auto-attack copied to clipboard

Problem that forward output is tuple rather than tensor

Open momo1986 opened this issue 3 years ago • 1 comments

Hi, dear Frank.

I met the problem caused by PyTorch. The returned forward output is tuple rather than tensor.

I must do operation on output[0] rather than output.

However, the internal code of auto attack is doing on output tensor directly. Is there an auto-attack code version to support the operation to do the execution on the output[0] rather than output? Or should I adjust the PyTorch-Version to support the auto-attack and retrain the model?

Traceback (most recent call last): File "eval_cifar.py", line 110, in main() File "eval_cifar.py", line 107, in main X_adv = adversary.run_standard_evaluation(x_test, y_test, bs=128) File "/opt/conda/lib/python3.6/site-packages/autoattack-0.1-py3.6.egg/autoattack/autoattack.py", line 91, in run_standard_evaluation AttributeError: 'tuple' object has no attribute 'max'

I am looking forward to your answer.

Thanks & Regards! Momo

momo1986 avatar Feb 27 '22 14:02 momo1986

Hi,

I think a solution could be to use a wrapper like

class NewModel():
    def __init__(self, model):
        self.model = model

    def __call__(self, x):
        return self.model(x)[0]

on your model, so that it returns only the first element (this is similar to https://github.com/fra31/auto-attack/issues/16).

Hope this helps!

fra31 avatar Feb 27 '22 14:02 fra31