Я пытаюсь запустить преобразование Фурье изображения с различными размерами выходного сигнала с помощью pytorch. Например, предположим, что входной размер изображения составляет [3x32x32], а выходной размер преобразования Фурье составляет [3x64x64], тогда идеальный код может быть представлен как torch.rfft (input, signal_ndim = 3, n = (3 , 64,64)) (если задано n - размер выходного сигнала).
Однако pytorch, похоже, не предлагает аргумент 'n'. Согласно документации pytorch fft, N представляет собой выходной размер сигнала, но не может быть изменен в коде.
Итак, кто-нибудь знает, как изменить выходной размер сигнала, преобразованного Фурье, с помощью pytorch? Я был бы признателен, если бы кто-нибудь мог сказать мне решение для изменения выходного размера преобразованного Фурье сигнала.
Вы можете видеть, что numpy -fft библиотека использует аргумент 's' как выходной размер сигнал в коде.
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
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])