class_docstr: The Latent Context Embedding Additive (LCE-A) Kernel.
  
  This kernel is similar to the SACKernel, and is used when context breakdowns are
  unbserverable. It assumes the same additive structure and a spatial kernel shared
  across contexts. Rather than assuming independence, LCEAKernel models the
  correlation in the latent functions for each context through learning context
  embeddings.
docstr: Construct embedding layers.
  If model is non-batch, we use nn.Embedding to learn emb weights. If model is
  batched (sef.batch_shape is non-empty), we load emb weights posterior samples
  and construct a parameter list that each parameter is the emb weight of each
  layer. The shape of weight matrices are ns x num_contexts x emb_dim.
docstr_tok: ["Construct","embedding","layers",".","If","model","is","non-batch",",","we","use","nn.Embedding","to","learn","emb","weights",".","If","model","is","batched","(","sef.batch_shape","is","non-empty",")",",","we","load","emb","weights","posterior","samples","and","construct","a","parameter","list","that","each","parameter","is","the","emb","weight","of","each","layer",".","The","shape","of","weight","matrices","are","ns","x","num_contexts","x","emb_dim","."]
code: def _set_emb_layers(self) -> None:
      """Construct embedding layers.
      If model is non-batch, we use nn.Embedding to learn emb weights. If model is
      batched (sef.batch_shape is non-empty), we load emb weights posterior samples
      and construct a parameter list that each parameter is the emb weight of each
      layer. The shape of weight matrices are ns x num_contexts x emb_dim.
      """
      self.emb_layers = ModuleList(
          [
              torch.nn.Embedding(
                  num_embeddings=x, embedding_dim=y, max_norm=1.0
              )
              for x, y in self.emb_dims
          ]
      )
      # use posterior of emb weights
      if len(self.batch_shape) > 0:
          self.emb_weight_matrix_list = torch.nn.ParameterList(
              [
                  torch.nn.Parameter(
                      torch.zeros(
                          self.batch_shape + emb_layer.weight.shape,
                          device=self.device,
                      )
                  )
                  for emb_layer in self.emb_layers
              ]
          )
  
imports: from typing import Any, Dict, List, Optional
  import torch
  from gpytorch.constraints import Positive
  from gpytorch.kernels.kernel import Kernel
  from gpytorch.kernels.matern_kernel import MaternKernel
  from gpytorch.priors.torch_priors import GammaPrior
  from linear_operator.operators import DiagLinearOperator
  from linear_operator.operators.dense_linear_operator import DenseLinearOperator
  from torch import Tensor
  from torch.nn import ModuleList
label_desc: Use image node_id 7 for calling the LCEAKernel obj's underlying member method code with example usage: obj._set_emb_layers() without return types