Reduce dimensionality 5D -> 3D using conv3d

I want to reduce a tensor with shape of (32,32,26, 40,10) to (32,32,512). Basically, I want to keep the batch size and sequence length, and embed the last three dimension to 512.
How can I do this reduction using conv3d?
Thanks!

I don’t know how you are interpreting the input data, but I guess you are treating the channel dimension in dim1 as the “sequence length”?
3D convolutions expect an input in the shape [batch_size, channels, depth, height, width].
I don’t think using a plain nn.Conv3d would work directly as you are increasing the depth size from 26 to 512.
Maybe you want to flatten the depth, height, width into a single feature dimension and apply an nn.Linear layer instead?

x = torch.randn(32, 32, 26, 40, 10)
x = x.view(x.size(0), x.size(1), -1)
linear = nn.Linear(26*40*10, 512)
out = linear(x)
print(out.shape)
# torch.Size([32, 32, 512])
1 Like

Hi,
Yes, the sequence length is interpreted as channel. using a linear on flatten d, h, w is a solution.
Thanks!