Преобразование выходного размера сигнала, преобразованного Фурье, с помощью Pytorch (torch.rfft) - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь запустить преобразование Фурье изображения с различными размерами выходного сигнала с помощью pytorch. Например, предположим, что входной размер изображения составляет [3x32x32], а выходной размер преобразования Фурье составляет [3x64x64], тогда идеальный код может быть представлен как torch.rfft (input, signal_ndim = 3, n = (3 , 64,64)) (если задано n - размер выходного сигнала).

Однако pytorch, похоже, не предлагает аргумент 'n'. Согласно документации pytorch fft, N представляет собой выходной размер сигнала, но не может быть изменен в коде.

Итак, кто-нибудь знает, как изменить выходной размер сигнала, преобразованного Фурье, с помощью pytorch? Я был бы признателен, если бы кто-нибудь мог сказать мне решение для изменения выходного размера преобразованного Фурье сигнала.

Вы можете видеть, что numpy -fft библиотека использует аргумент 's' как выходной размер сигнал в коде.

  1. Numpy https://numpy.org/doc/stable/reference/generated/numpy.fft.fftn.html numpy .fft.fftn (a, s = None, axes = None, norm = None) -> 's' обозначает форму выходного сигнала. Простой код

    import torch
    import numpy as np
    
    np_a = torch.rand(3, 32, 32).numpy()
    np_a_ft = np.fft.fftn(a, (3,28, 28))
    print(np_a_ft.shape)
    
    Input size of image                    : 3, 32, 32  
    Output size of after fourier transform : 3, 28, 28
    
  2. Pytorch https://pytorch.org/docs/stable/generated/torch.rfft.html torch.rfft (input, signal_ndim, normalized = False, onesided = True)

    torch_x   = torch.rand(3, 32, 32, requires_grad=True)
    torch_xf  = torch.rfft(torch_x, 3)
    print(torch_xf.size())
    
    torch.Size([3, 32, 17, 2])
    
...