调试:
tensorboard入口文件 ./tensorboard/main.py function:run_main()
def run_main():
"""Initializes flags and calls main()."""
program.setup_environment()
tensorboard = program.TensorBoard(default.get_plugins(),
default.get_assets_zip_provider())
# 增加启动参数
sys.argv.append('--logdir='+eventpath)
# 重新配置tensorboard启动项
tensorboard.configure(sys.argv)
try:
from absl import app
# Import this to check that app.run() will accept the flags_parser argument.
from absl.flags import argparse_flags
app.run(tensorboard.main, flags_parser=tensorboard.configure)
raise AssertionError("absl.app.run() shouldn't return")
except ImportError:
pass
tensorboard.configure(sys.argv)
sys.exit(tensorboard.main())
运行main.py,程序和shell启动相同
页签管理:
项目中经常会有需求对tensorboard的eventlog页签进行相应的管理,比如image中有部分图片不想让用户直接查看
tensorboard的文件解析由各自的plugin处理:
<tensorboard.plugins.core.core_plugin.CorePlugin>
<tensorboard.plugins.beholder.beholder_plugin.BeholderPlugin>
<tensorboard.plugins.scalar.scalars_plugin.ScalarsPlugin>
<tensorboard.plugins.custom_scalar.custom_scalars_plugin.CustomScalarsPlugin>
<tensorboard.plugins.image.images_plugin.ImagesPlugin>
<tensorboard.plugins.audio.audio_plugin.AudioPlugin>
<tensorboard.plugins.graph.graphs_plugin.GraphsPlugin>
<tensorboard.plugins.distribution.distributions_plugin.DistributionsPlugin>
<tensorboard.plugins.histogram.histograms_plugin.HistogramsPlugin>
<tensorboard.plugins.pr_curve.pr_curves_plugin.PrCurvesPlugin>
<tensorboard.plugins.projector.projector_plugin.ProjectorPlugin>
<tensorboard.plugins.text.text_plugin.TextPlugin>
<tensorboard.plugins.interactive_inference.interactive_inference_plugin.InteractiveInferencePlugin>
<tensorboard.plugins.profile.profile_plugin.ProfilePlugin>
./tensorboard/backend/application.py
function: standard_tensorboard_wsgi(flags, plugin_loaders, assets_zip_provider)
plugins = []
for loader in plugin_loaders:
plugin = loader.load(context)
if plugin is None:
continue
# 可以根据自己的策略进行过滤 此处过滤ImagesPlugin
if plugin.plugin_name == 'images':
continue
plugins.append(plugin)
plugin_name_to_instance[plugin.plugin_name] = plugin
return TensorBoardWSGIApp(flags.logdir, plugins, loading_multiplexer,
reload_interval, flags.path_prefix)