in tensorboard/plugins/projector/projector_plugin.py [0:0]
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]