Closed andreeabir closed 2 years ago
Hi andreeabir,
I don't have much time to check your code, but you'll want to make sure that the pooling regions (2x2) are mapped onto each other by the rotation. Ie each pooling region is mapped to exactly one pooling region. This will depend on the image size and whether it's odd or even, and what you use as rotation center (the center of a pixel or the place between 4 pixels). You should be able to test the equivariance of this operation in isolation, which may be easier.
Hi,
Thank you for the quick response. I have tested the equivariance of the maxpool operation in isolation and indeed I found that there were some problems in the test code depending on the image size (odd or even). Thanks for the guidance.
Hi,
I have a question regarding the implementation of equivariant pooling. I found in your experiments the usage of function imported from . In this implementation, the rotation axis and channel axis are fold together, perform 2d spatial pooling and then unfold. I have used the same implementation in Pytorch and tested if my P4CNN using pooling is equivariant using the code below. I found that when I add after each GConv, the network is not equivariant and the test fails. However, when I am not using , the GCNN is equivariant and the test pass. I don't understand if the pooling layer implemented like this is equivariant or not, or I am testing wrong the equivariance of the network. Can you help me please?