How does one write the mathematical formula for conv1d used in PyTorch, including parameters like stride length and padding?
For instance, I can write
import torch
input1d = torch.tensor([[[1,2,3,4,5]]])
filter1d = torch.tensor([[[4,3]]])
torch.nn.functional.conv1d(input1d, filter1d)
Output:
tensor([[[10, 17, 24, 31]]])
This is equivalent to
torch.einsum("abcd,abd->abc", input1d.unfold(2,2,1), filter1d)
How does this translate to mathematical operations? I am particularly uncertain about input1d.unfold(2,2,1)
.
I have the following, but I am quite sure it is incorrect $$ x = \mathrm{input1d} \in \mathbb{R}^{1 \times 1 \times 5} \\ w = \mathrm{filter1d} \in \mathbb{R}^{1 \times 1 \times 2} \\ \int_{-\infty}^{\infty} \sum_{d} x_{abcd}\,w_{abd} $$