-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Complex max pooling #17
Comments
Complex max pooling, i assume, would be a split activation, meaning that it would be applied to the real and imag components independently. In this case, you could do the following: import torch
from torch.nn import MaxPool2d
from cplxmodule import Cplx
from cplxmodule.nn import CplxToCplx
input = Cplx(real=torch.randn(1, 4, 8, 8), imag=torch.randn(1, 4, 8, 8))
# create a split-layer
CplxMaxPool2d = CplxToCplx[MaxPool2d]
layer = CplxMaxPool2d(2, 2)
layer(input) You can see a couple of other examples in the README of |
Actually, that would destroy the phase information as the max of real and imaginary can be from different indices. I was thinking more about the way listed in Cao et al. "Pixel-Wise PolSAR Image Classification via a Novel Complex-Valued Deep Fully Convolutional Network" or Zhang et al. "Complex-Valued Convolutional Neural Network and Its Application in Polarimetric SAR Image Classification". In both cases, they apply the max-pooling to the absolute value. PS: The output, however, must still be complex of course. The comparison of a>b is done with the absolute value. |
I apologise for ignoring your issue for so long @NEGU93 . I have implemented the core functions and the layers for the max-pooling you requested. Below is the abstract description of the operation The split-layer max-pooling above can also be used. i hope the layers are still relevant to your work or research. |
Is there an implementaion of a complex max pooling?
The text was updated successfully, but these errors were encountered: