class_docstr: Support set is encoded by a CNN, query by a LSTM.
code: def __init__(self, config: CNNLSTMEcDcConfig):
      Configurable.__init__(self, config)
      EncoderDecoderMetaModel.__init__(
          self,
          feature_extractor=IdentityFeatureExtractor(),
          supps_enc=CNNSupportSetEncoder(
              input_size=1, out_channels=config.supps_out_channels
          ),
          query_enc=LSTMQueryEncoder(
              input_size=1,
              num_layers=1,
              hidden_size=32,
          ),
          attention=MultiHeadSupportSetQueryAttention(
              supps_size=config.supps_out_channels,
              q_size=32,
              num_heads=config.num_heads,
          ),
          decoder=FeedForwardQuantileDecoder(
              embed_size=config.attention_embed_size,
              q_size=32,
              prediction_length=config.prediction_length,
              num_quantiles=len(config.quantiles),
          ),
      )
  
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 CNNLSTMEcDc object from inherited base classes: EncoderDecoderMetaModel, Configurable with example: obj = CNNLSTMEcDc(config)