denfed/leaf-audio-pytorch

Why use complex number in convolution

jjjjohnson opened this issue · 1 comments

Hi @denfed
The paper says "we compute instead the convolution with 2N real-valued filters φ ̃ , n = 1, . . . , 2N , and perform squared l2-pooling". I am wandering why in the code we still use complex number when initializing the filter.

Thanks for the great work!
Junjie

Hello! My apologies for the extremely late reply on this. The authors of LEAF use 2N real-valued filters, each for the real and complex portions of complex numbers. It's a pretty cool trick for an easy way of working with complex numbers without actually having to use complex tensors for convolutional layers. For example, 2+4i and 3+2i would be represented as two real valued filters as [2,3] and [4,2].

When we initialize the filters, we do create complex numbers but we right away split them into two real-valued filters, shown above.