当我们需要查看模型文件如.pb, .meta
等的结构的时候,需要先根据model生成event文件。在生成event文件之后,通过命令行执行tensorboard --logdir=[event dir]
即可启动TensorBoard服务,其中命令中中括号内表示event文件所在目录。那么我们来看看,event文件是怎么一步一步呈现出来的。
首先来看一下整个event文件解析流程的时序图:
上图是服务器启动之前所做的解析工作,下面我们就跟着代码,看看每一步都是怎么进行的。
一切还得从文章最开始得那条命令开始说起。既然存在一个tensorboard
命令,那么就一定可以找到一个以该命令命名的文件,且该文件所在的路径一定在操作系统的环境变量中。直接使用which tensorboard
可以定位到文件所在目录,在我电脑上,它位于/home/chou/SNPE/venv/bin
路径下。
(venv) chou@chou-vb:~/$ which tensorboard
/home/chou/SNPE/venv/bin/tensorboard
打开该文件,很简单,只有几行:
from tensorboard.main import run_main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(run_main())
从第一行可以看出。真正的入口是tensorboard/main.py
中的run_main()
函数。我们找到Github下载下来的源代码,开main.py文件并定位到run_main()函数。
def run_main():
"""Initializes flags and calls main()."""
program.setup_environment()
# 生成TensorBoard实例
tensorboard = program.TensorBoard(default.get_plugins(),
program.get_default_assets_zip_provider())
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)
# 调用TensorBoard的main函数
sys.exit(tensorboard.main())
可以看到,run_main()
的主要工作是进行了一些设置,并最终调用了TensorBoard的main
函数。
def main(self, ignored_argv=('',)):
...