class_docstr: Base class for meta models with a specific encoder - decoder architecture.
  
  Parameters
  ----------
  feature_extractor: A feature extractor that is applied to queries and support series alike
      and computes features for each time step.
  supps_enc: A support set encoder that encodes each time step of each support series.
  query_enc: A query encoder that encodes each query into a global presentation (not each time step).
  attention: Attention over encoded query and support series.
  decoder: Forecasts from attention(query, supps) and encoded query.
code: def __init__(
      self,
      feature_extractor: FeatureExtractor,
      supps_enc: SupportSetEncoder,
      query_enc: QueryEncoder,
      attention: SupportSetQueryAttention,
      decoder: Decoder,
  ):
      MetaModel.__init__(self)
      self.feature_extractor = feature_extractor
      self.supps_enc = supps_enc
      self.query_enc = query_enc
      self.attention = attention
      self.decoder = decoder
  
imports: from typing import List
  import torch
  from meta.models.EcDc.components import CausalCNNEncoder
  from lightkit.nn import Configurable
  from dataclasses import dataclass, field
  from meta.models.registry import register_model
  from meta.data.batch import SeriesBatch
  from meta.models.model import MetaModel
  from .components import FeatureExtractor, SupportSetEncoder, QueryEncoder, SupportSetQueryAttention, Decoder, TcnQueryEncoder, IdentityFeatureExtractor, LSTMSupportSetEncoder, LSTMQueryEncoder, FeedForwardQuantileDecoder, MultiHeadSupportSetQueryAttention, CNNSupportSetEncoder, TcnSupportSetEncoder
label_desc: Use image node_id 1 to create a new EncoderDecoderMetaModel object from inherited base classes: MetaModel with example: obj = EncoderDecoderMetaModel(feature_extractor, supps_enc, query_enc, attention, decoder)