class_docstr: A Keras Layer for sparse feature embedding based on CAML.
  
  Example usage:
    feat_embed = SparseFeatureEmbedding(
        de_config, {"first_fea": (10, 1), "second_fea": (5, 1)})
  
    # emb is a [batch_size, 15] Tensor.
    emb = feat_embed({"first_fea": first_tensor, "second_fea": second_tensor})
class_docstr_tok: ["A","Keras","Layer","for","sparse","feature","embedding","based","on","CAML",".","Example","usage",":","feat_embed","=","SparseFeatureEmbedding","(","de_config",",","{","``","first_fea","''",":","(","10",",","1",")",",","``","second_fea","''",":","(","5",",","1",")","}",")","#","emb","is","a","[","batch_size",",","15","]","Tensor",".","emb","=","feat_embed","(","{","``","first_fea","''",":","first_tensor",",","``","second_fea","''",":","second_tensor","}",")"]
code: def variable_map(self):
      return self._variable_map
  
imports: import collections
  import threading
  import typing
  from research.carls import dynamic_embedding_config_pb2
  from research.carls import dynamic_embedding_ops
  from six.moves import range
  import tensorflow
label_desc: Use image node_id 2 for calling the SparseFeatureEmbedding obj's underlying member method code with example usage: obj.variable_map() and returns: self