class_docstr: Embedding projector.
class_docstr_tok: ["Embedding","projector","."]
code: def _augment_configs_with_checkpoint_info(self):
      for run, config in self._configs.items():
          for embedding in config.embeddings:
              # Normalize the name of the embeddings.
              if embedding.tensor_name.endswith(":0"):
                  embedding.tensor_name = embedding.tensor_name[:-2]
              # Find the size of embeddings associated with a tensors file.
              if embedding.tensor_path:
                  fpath = _rel_to_abs_asset_path(
                      embedding.tensor_path, self.config_fpaths[run]
                  )
                  tensor = self.tensor_cache.get(
                      (run, embedding.tensor_name)
                  )
                  if tensor is None:
                      try:
                          tensor = _read_tensor_tsv_file(fpath)
                      except UnicodeDecodeError:
                          tensor = _read_tensor_binary_file(
                              fpath, embedding.tensor_shape
                          )
                      self.tensor_cache.set(
                          (run, embedding.tensor_name), tensor
                      )
                  if not embedding.tensor_shape:
                      embedding.tensor_shape.extend(
                          [len(tensor), len(tensor[0])]
                      )
  
          reader = self._get_reader_for_run(run)
          if not reader:
              continue
          # Augment the configuration with the tensors in the checkpoint file.
          special_embedding = None
          if config.embeddings and not config.embeddings[0].tensor_name:
              special_embedding = config.embeddings[0]
              config.embeddings.remove(special_embedding)
          var_map = reader.get_variable_to_shape_map()
          for tensor_name, tensor_shape in var_map.items():
              if len(tensor_shape) != 2:
                  continue
              # Optimizer slot values are the same shape as embeddings
              # but are not embeddings.
              if ".OPTIMIZER_SLOT" in tensor_name:
                  continue
              embedding = self._get_embedding(tensor_name, config)
              if not embedding:
                  embedding = config.embeddings.add()
                  embedding.tensor_name = tensor_name
                  if special_embedding:
                      embedding.metadata_path = (
                          special_embedding.metadata_path
                      )
                      embedding.bookmarks_path = (
                          special_embedding.bookmarks_path
                      )
              if not embedding.tensor_shape:
                  embedding.tensor_shape.extend(tensor_shape)
  
      # Remove configs that do not have any valid (2D) tensors.
      runs_to_remove = []
      for run, config in self._configs.items():
          if not config.embeddings:
              runs_to_remove.append(run)
      for run in runs_to_remove:
          del self._configs[run]
          del self.config_fpaths[run]
  
imports: import collections
  import functools
  import imghdr
  import mimetypes
  import os
  import threading
  import numpy
  from werkzeug import wrappers
  from google.protobuf import json_format
  from google.protobuf import text_format
  from tensorboard import context
  from tensorboard.backend.event_processing import plugin_asset_util
  from tensorboard.backend.http_util import Respond
  from tensorboard.compat import tf
  from tensorboard.plugins import base_plugin
  from tensorboard.plugins.projector import metadata
  from tensorboard.plugins.projector.projector_config_pb2 import ProjectorConfig
  from tensorboard.util import tb_logging
label_desc: Use image node_id 7 for calling the ProjectorPlugin obj's underlying member method code with example usage: obj._augment_configs_with_checkpoint_info() without return types