class_docstr: Encodes each time step in the support set times series via the hidden states of a LSTM.
  
  Parameters
  ----------
  input_size: The number of features of the time series.
  hidden_size: The size of hidden states of LSTM, corresponds to encoding size of the queries,
      i.e. the encoder returns a tensor with shape [batch, sequence length, D * hidden_size].
  num_layers: number of layers of the LSTM.
  bidirectional: If a bidirectional LSTM is used. If true: D = 2, else D = 1.
code: def __init__(
      self,
      input_size: int,
      hidden_size: int,
      num_layers: int,
      bidirectional: bool,
  ):
      super().__init__()
      self.encoder = nn.LSTM(
          input_size=input_size,
          hidden_size=hidden_size,
          num_layers=num_layers,
          bidirectional=bidirectional,
          batch_first=True,
      )
  
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 1 to create a new LSTMSupportSetEncoder object from inherited base classes: SupportSetEncoder with example: obj = LSTMSupportSetEncoder(input_size, hidden_size, num_layers, bidirectional)