Tensorflow Estimator 框架中没有 Tensorboard 日志记录
Posted
技术标签:
【中文标题】Tensorflow Estimator 框架中没有 Tensorboard 日志记录【英文标题】:No Tensorboard logging in Tensorflow Estimator framework 【发布时间】:2018-02-11 08:47:53 【问题描述】:我正在使用 Estimator 来训练我的网络。我想用 Tensorboard 进行监控。 Estimator 的博客声称:
"The training will output information like the global step, loss,
and accuracy over time on the terminal output. Besides this, the
Experiment and Estimator framework will log certain statistics to
be visualized by TensorBoard."
https://medium.com/onfido-tech/higher-level-apis-in-tensorflow-67bfb602e6c0
我的进程确实创建了事件文件,但是里面什么都没有。
These tags are in checkpoints/1504359209.469093:
audio -
histograms -
images -
scalars -
tensor -
什么控制着 Estimator 写入的标量等,以及它多久写入一次?
【问题讨论】:
【参考方案1】:首先,文档在这一点上不是很清楚。 为避免编写教程,以下几点可能对您有所帮助,尽管我应该说我不太清楚您的代码当前是如何设置的。
您不希望创建 FileWriter。相反,您只需将 tf.summary.scalar 和 tf.name_scope 注释添加到您的 model_fn。 您不希望从 sess.run 传回任何内容。这是我的第一个猜测,我可以确认您可以保留您的 Estimator 并且不需要重组。 您应该查看创建估算器的行 (estimator.Estimator(model_fn=...))。在这一行中,您指定了您的 model_dir,这是您将指向 tensorboard 的 logdir 参数的位置。估算器会自动登录到 model_dir,它们不需要 FileWriter。您可能已经知道这一点,因为您可以看到事件输出,但我会提到它,以防它发现我们正在做的事情之间存在一些不一致。 您还应该查看传递给估算器的 RunConfig。我的包含键 save_summary_steps,我认为它控制了写入发生的频率。【讨论】:
【参考方案2】:谢谢。这很有帮助。
我已经使用默认标量让它工作了,但是您的建议将允许我添加新的。
就我而言,问题出在数据输入上。我复制了使用 DataSet 的现有代码。这是我的代码
# Build dataset iterator
dataset = tf.contrib.data.Dataset.from_tensor_slices(
# dataset = tf.contrib.data.Dataset.from_tensors(
(fingerprints_placeholder, labels_placeholder))
#dataset = dataset.repeat(None) # Infinite iterations
#dataset = dataset.shuffle(buffer_size=10000)
dataset = dataset.batch(batch_size)
iterator = dataset.make_initializable_iterator()
注意注释掉的行。由于某种原因,它们会导致代码永远运行而没有输出。删除它们可以让一切都像宣传的那样工作。
【讨论】:
以上是关于Tensorflow Estimator 框架中没有 Tensorboard 日志记录的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:模块“tensorflow.estimator”没有属性“SessionRunHook”
如何将 TensorRT SavedModel 加载到 TensorFlow Estimator?
ModuleNotFoundError:没有名为“tensorflow_core.estimator”的模块用于 tensorflow 2.1.0
Tensorflow在Python中导出和重用Estimator对象