I'm doing some experimentation on performing end to end generative modeling in the frequency domain. I've got a working convolutional layer, but do not yet have a Conv2DTranspose equivalent. Please note this is not deconvolution! Unfortunately, my signal processing knowledge is pretty weak at the moment (I'm taking some classes in SP this Fall).

I know convolution is performed in the frequency domain by performing pointwise multiplication. Does transpose convolution have a frequency domain equivalent? If so, what is the correct operation or series of operations to perform here?

  • $\begingroup$ what kind of signal are you referring to? 2D, n-dimensional? "conv. is impl'ed by p'wise mult in the freq. domain" yes, but be aware that this means circular convolution in case of "frequency domain" meaning DFT. But if it means the DFT: the DFT is separable along all its axis, so DFT(transpose(x)) = transpose(DFT(x)). $\endgroup$ Jul 1 '21 at 9:05
  • $\begingroup$ @LukeWood, Could you review my answer? $\endgroup$
    – Royi
    Jul 23 '21 at 9:04
  • $\begingroup$ Yes! One moment $\endgroup$
    – Luke Wood
    Aug 3 '21 at 3:25
  • $\begingroup$ Accepted! Sorry, for some reason last time I logged on I wasn't able to accept it. $\endgroup$
    – Luke Wood
    Aug 12 '21 at 3:40

Basically, if we define convolution as $ y = h \ast x $, it can be written in Matrix form (See Generate the Matrix Form of 1D Convolution Kernel):

$$ \boldsymbol{y} = H \boldsymbol{x} $$

Transposed Convolution is given by:

$$ {H}^{T} \boldsymbol{z} $$

If you look carefully, you'd see the spatial operation is basically correlation instead of convolution (Namely the kernel isn't flipped).

To achieve that in Frequency Domain you need to multiply by the conjugate of the kernel in Frequency domain instead of the kernel itself.

The tricky part is the dimensions. It will work as I described in Replicate MATLAB's conv2() in Frequency Domain.

Pay attention that in the context of Deep Learning the whole idea of the operation is that the kernel will be learned (Adaptively in each back propagation iteration). This is in order to learn the best kernel for up sampling operation.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.