【发布时间】:2016-12-05 08:26:30
【问题描述】:
我想要一个脚本,它要么收集张量板数据,要么不收集,这取决于我如何运行它。我知道我可以传递标志来告诉我的脚本我希望它如何运行。我什至可以在脚本中对其进行硬编码,然后手动更改脚本。
这两种解决方案都有更大的问题。当我想要运行或不运行摘要编写器操作时,我发现自己必须在脚本的任何地方都写一个 if 语句。例如,我发现我必须执行以下操作:
if tb_sys_arg = 'tensorboard':
merged = tf.merge_all_summaries()
然后根据tb_sys_arg 的值运行摘要与否,如下所示:
if tb_sys_arg = 'tensorboard':
merged = tf.merge_all_summaries()
else:
train_writer = tf.train.SummaryWriter(tensorboard_data_dump_train, sess.graph)
这对我来说似乎很愚蠢。我宁愿不必那样做。这是正确的方法吗?我只是不想在每次运行主脚本时都收集统计信息,但我也不想有两个单独的脚本。
作为一个轶事,几个月前我开始使用 TensorBoard,似乎我一直在运行我的主文件,如下所示:
python main.py —logdir=/tmp/mdl_logs
以便它收集张量板数据。但意识到我认为我不需要最后一个标志来收集张量板数据。它已经很久了,现在我忘记了我是否真的需要它。我一直在阅读文档和教程,但似乎我不需要最后一个标志(它只需要像tensorboard --logdir=path/to/log-directory 那样运行网络应用程序,对吗?)我一直做错了吗?
【问题讨论】:
-
你可以在没有“summary”服务的情况下启动Supervisor,所以它不会运行summary节点:github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/…
-
您使用的标志不是严格需要的,但它允许指定将日志保存到 TensorBoard 的位置,因此它在训练时确实有一些用处。你也可以用别的名字来命名它。
-
@YaroslavBulatov 如何使用您的链接和有意义的代码 (
sv = Supervisor(logdir='/tmp/mydir', summary_op=None)) 发布答案。你很准。 -
@YaroslavBulatov 是的!请用一段代码提供答案! :D
标签: machine-learning neural-network tensorflow conv-neural-network tensorboard