Hello!
I am convolving two 1D signals with scipy.signal.fftconvolve: c = fftconvolve(b, a, "full")
. I would like to replace the fftconvolve function with a torch function. I tried to use torch.nn.functional.conv1d, but it doesn’t return the result I expected. My signals have the same length (and not start/end with 0).
For the sake of completeness, I tested the following code:
from scipy import signal
from torch.nn.functional import conv1d
a = np.repeat([0., 1., 0.], 100)
b = np.repeat([0., 1., 0.], 100)
c = signal.convolve(a, b, mode='full')
c_fft = signal.fftconvolve(a, b, mode='full')
torch_a = torch.Tensor(a)
torch_a = torch.unsqueeze(torch_a, 0)
torch_a = torch.unsqueeze(torch_a, 0)
torch_b = torch.Tensor(b)
torch_b = torch.unsqueeze(torch_b, 0)
torch_b = torch.unsqueeze(torch_b, 0)
torch_c = conv1d(torch_a, torch_b, padding=len(a))
Here conv1d behaves as expected, but if I set a = b = np.repeat([1., 1., 0.], 100)
the result is no longer the same (I assume because the signal doesn’t start/end with 0).
Any help is welcome!
Best,
Francesca