Hi @ptrblck,
Thanks for the quick response. At first I planned to do it this way, but a part of me said that it was not the correct way. I basically wanted to summarise the time_series that belong to each one of the 30 days for each feature.
What I ended up doing is this:
x = torch.randn(5, 30, 9, 10) #[batch, #days, time_steps, features]

from torch import nn

class ConvNet(nn.Module):

    def __init__(self, channels, features):
        super().__init__()
        
        self.layer1 = nn.Sequential(
            nn.Conv1d(in_channels=channels,
                      out_channels=channels,
                      kernel_size=(5,1)),
            nn.BatchNorm2d(num_features=channels),
            nn.ReLU(),
            nn.AdaptiveMaxPool2d(output_size=(7, features)))

        self.layer2 = nn.Sequential(
           nn.Conv1d(in_channels=channels,
                     out_channels=channels,
                     kernel_size=(3,1)),
            nn.BatchNorm2d(num_features=channels),
            nn.ReLU(),
            nn.AdaptiveMaxPool2d(output_size=(1, features)))

    def forward(self, x):
        out = self.layer1(x)
        out = self.layer2(out)

        return out



dim1 (#days): maintained the same size across the network

dim2 (time_steps): decreased its size in the first and second convolution operation, and enforced an ouput of 1 in the last AdaptiveMaxPool2d.

dim3 (features): maintained the same across the network

My tensor ended up being of shape [5, 30, 10] #[batch_size, #days, features]
I used the 1D convolution operation because I found out that it is the most common to use when you have time series data (although I have 4 dimensions in total) because the filter only moves to one direction.
I would really appreciate your feedback on my approach!