class_docstr: Encodes the time series in the support set via a CNN.
  
  Parameters
  ----------
  input_size: The number of features of the time series.
  out_channels: The number of output channels of the CNN, corresponds to encoding size of the queries,
      i.e. the encoder returns a tensor with shape [batch, sequence length, D * hidden_size].
code: def forward(self, supps: SeriesBatch) -> torch.Tensor:
      # TODO: permute should be handled as here:
      # https://pytorch.org/tutorials/intermediate/memory_format_tutorial.html
      # https://discuss.pytorch.org/t/dataset-with-last-dimension-as-channel/100639/6
      pool = F.avg_pool1d
      channels_first = supps.sequences.permute(0, 2, 1)
      x = pool(F.relu(self.conv1(channels_first)), 2)
      x = pool(F.relu(self.conv2(x)), 2)
      x = pool(F.relu(self.conv3(x)), 2)
      x = pool(F.relu(self.conv4(x)), 2)
  
      # TODO: padding of the batches is not takes into account!
      return SeriesBatch(
          x.permute(0, 2, 1), supps.lengths, supps.split_sections
      )
  
imports: from abc import ABC, abstractmethod
  import torch
  from meta.models.EcDc.components.tcn import CausalCNNEncoder
  from torch import nn
  import torch.nn.functional
  from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence
  from meta.data.batch import SeriesBatch
label_desc: Use image node_id 2 for calling the CNNSupportSetEncoder obj's underlying member method code with example usage: obj.forward(supps) and returns: SeriesBatch