Skip to content

Problem that forward output is tuple rather than tensor #83

Description

@momo1986

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

Activity

  1. fra31 commented on Feb 27, 2022

    @fra31
    Owner

    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 #16).

    Hope this helps!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions