def _read_latest_config_files(self, run_path_pairs): """Reads and returns the projector config files in every run directory.""" """If no specific config exists, use the default config provided in the root directory.""" default_config_fpath = os.path.join(self.logdir, metadata.PROJECTOR_FILENAME) default_config = ProjectorConfig() if tf.io.gfile.exists(default_config_fpath): with tf.io.gfile.GFile(default_config_fpath, "r") as f: file_content = f.read() text_format.Merge(file_content, default_config) # Relative metadata paths do not work with subdirs, so convert # any metadata paths to absolute paths. for embedding in default_config.embeddings: embedding.metadata_path = _rel_to_abs_asset_path( embedding.metadata_path, default_config_fpath) configs = {} config_fpaths = {} for run_name, assets_dir in run_path_pairs: config = ProjectorConfig() config_fpath = os.path.join(assets_dir, metadata.PROJECTOR_FILENAME) if tf.io.gfile.exists(config_fpath): with tf.io.gfile.GFile(config_fpath, "r") as f: file_content = f.read() text_format.Merge(file_content, config) elif tf.io.gfile.exists(default_config_fpath): config = default_config has_tensor_files = False for embedding in config.embeddings: if embedding.tensor_path: if not embedding.tensor_name: embedding.tensor_name = os.path.basename( embedding.tensor_path) has_tensor_files = True break if not config.model_checkpoint_path: # See if you can find a checkpoint file in the logdir. logdir = _assets_dir_to_logdir(assets_dir) ckpt_path = _find_latest_checkpoint(logdir) if not ckpt_path and not has_tensor_files: continue if ckpt_path: config.model_checkpoint_path = ckpt_path # Sanity check for the checkpoint file existing. if (config.model_checkpoint_path and _using_tf() and not tf.io.gfile.glob(config.model_checkpoint_path + "*")): logger.warn( 'Checkpoint file "%s" not found', config.model_checkpoint_path, ) continue configs[run_name] = config config_fpaths[run_name] = config_fpath return configs, config_fpaths
def _read_latest_config_files(self, run_path_pairs): """Reads and returns the projector config files in every run directory.""" configs = {} config_fpaths = {} for run_name, assets_dir in run_path_pairs: config = ProjectorConfig() config_fpath = os.path.join(assets_dir, metadata.PROJECTOR_FILENAME) if tf.io.gfile.exists(config_fpath): with tf.io.gfile.GFile(config_fpath, "r") as f: file_content = f.read() text_format.Merge(file_content, config) has_tensor_files = False for embedding in config.embeddings: if embedding.tensor_path: if not embedding.tensor_name: embedding.tensor_name = os.path.basename( embedding.tensor_path ) has_tensor_files = True break if not config.model_checkpoint_path: # See if you can find a checkpoint file in the logdir. logdir = _assets_dir_to_logdir(assets_dir) ckpt_path = _find_latest_checkpoint(logdir) if not ckpt_path and not has_tensor_files: continue if ckpt_path: config.model_checkpoint_path = ckpt_path # Sanity check for the checkpoint file existing. if ( config.model_checkpoint_path and _using_tf() and not tf.io.gfile.glob(config.model_checkpoint_path + "*") ): logger.warn( 'Checkpoint file "%s" not found', config.model_checkpoint_path, ) continue configs[run_name] = config config_fpaths[run_name] = config_fpath return configs, config_fpaths
def _read_latest_config_files(self, run_path_pairs): """Reads and returns the projector config files in every run directory.""" configs = {} config_fpaths = {} for run_name, assets_dir in run_path_pairs: config = ProjectorConfig() config_fpath = os.path.join(assets_dir, PROJECTOR_FILENAME) if tf.gfile.Exists(config_fpath): with tf.gfile.GFile(config_fpath, 'r') as f: file_content = f.read() text_format.Merge(file_content, config) has_tensor_files = False for embedding in config.embeddings: if embedding.tensor_path: if not embedding.tensor_name: embedding.tensor_name = os.path.basename(embedding.tensor_path) has_tensor_files = True break if not config.model_checkpoint_path: # See if you can find a checkpoint file in the logdir. logdir = _assets_dir_to_logdir(assets_dir) ckpt_path = _find_latest_checkpoint(logdir) if not ckpt_path and not has_tensor_files: continue if ckpt_path: config.model_checkpoint_path = ckpt_path # Sanity check for the checkpoint file. if (config.model_checkpoint_path and not tf.train.checkpoint_exists(config.model_checkpoint_path)): tf.logging.warning('Checkpoint file "%s" not found', config.model_checkpoint_path) continue configs[run_name] = config config_fpaths[run_name] = config_fpath return configs, config_fpaths