code: def from_config(cls, config, tgt_dict, tgt_embedding):
      kernel_size_list = config.decoder_kernel_size_list
      layers = []
      for size in kernel_size_list:
          assert (
              config.decoder_config.decoder_embed_dim
              == config.layer_config.decoder_embed_dim
          )
          layers.append(
              create_module(config.layer_config, kernel_size=size)
          )
      return cls(tgt_dict, tgt_embedding, layers, config.decoder_config)
  
imports: import math
  from typing import Dict, List, Optional, Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from pytext.config import ConfigBase
  from pytext.config.module_config import ModuleConfig
  from pytext.models.module import create_module
  from pytext.models.seq_models.base import PlaceholderAttentionIdentity
  from pytext.models.seq_models.positional import build_positional_embedding, PostionalEmbedCombine, PostionalEmbedType
  from pytext.models.seq_models.utils import Linear, log_and_overwrite
  from torch import Tensor
  from torch.nn import LayerNorm
  from .attention import MultiheadAttention
  from .base import PlaceholderIdentity, PyTextIncrementalDecoderComponent, PyTextSeq2SeqModule
  from .light_conv import LightweightConv
  from .projection_layers import DecoderWithLinearOutputProjection, DecoupledDecoderHead
  from .utils import extract_ontology_vocab
label_desc: Use image node_id 1 for calling the LightConvDecoderBase obj's underlying member method code with example usage: obj.from_config(cls, config, tgt_dict, tgt_embedding) and returns: cls