Add PyTorch implementation for P4 and P4M GConv #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds P4-conv and P4M-conv classes for PyTorch.
The implementation is based on the Chainer implementation (SplitGConv2D base class), the main difference being that the filter transforms are implemented using torch.gather instead of a custom function/kernel.
Equivariance tests (mimicking those for the Chainer implementation) are included. Moreover, the rotated MNIST experiment in [1] was reproduced to validate the implementation (the experiment file is not included in this pull request).
[1] T.S. Cohen, M. Welling, Group Equivariant Convolutional Networks. Proceedings of the International Conference on Machine Learning (ICML), 2016.