IntelLabs / MART

Modular Adversarial Robustness Toolkit
BSD 3-Clause "New" or "Revised" License
16 stars 0 forks source link

Add conversion between PyTorch tensors and Numpy arrays #226

Open mzweilin opened 9 months ago

mzweilin commented 9 months ago

What does this PR do?

This PR adds a recursive convertor mart.transforms.tensor_array.convert that converts between Numpy arrays and PyTorch tensors hidden in complex data structures.

This is useful when running MART attacks in ARMORY because the Numpy data structure is used in ARMORY.

Type of change

Please check all relevant options.

Testing

Please describe the tests that you ran to verify your changes. Consider listing any relevant details of your test configuration.

Before submitting

Did you have fun?

Make sure you had fun coding 🙃

dxoigmn commented 9 months ago

See: https://pytorch.org/docs/stable/data.html#torch.utils.data.default_collate

mzweilin commented 9 months ago

Have you looked at torch's collate functionality? That can walk python data structure and apply a function. Might be helpful to reuse that here.

torch.utils.data.default_convert() is closer to our convert(), but it is not designed to be extensible with internal if-else.

We are not collating data here, so I don't want to abuse default_collate() or collate().