杀死张量流实例后如何“重置”张量板数据

我正在测试不同的超参数为 cnn 模型我建立,但我有一个小的烦恼,当查看在 Tensorboard 的摘要。问题似乎是数据只是在连续运行中“添加”,所以函数会导致奇怪的叠加,除非我将信息看作“相对”而不是“逐步”。看这里:

X Type: Step

X Type: Relative

我已经尝试杀死张量板的进程和删除日志文件,但似乎是不够的。

所以问题是,我该如何重置这些信息?

谢谢!

51966 次浏览

好吧,出于某种原因,它以前没有工作,但现在它做到了:

您必须删除 Tensorboard 的日志文件并终止其进程

终止该进程后,运行 fuser 6006/tcp -k以释放端口6006(如果您在 linux 中) ,并再次触发张量板。

注意: 您发布的解决方案(删除 TensorBoard 的日志文件并终止进程)可以工作,但不是首选,因为它会破坏关于您的培训的历史信息。

相反,您可以让每个新的培训作业写入一个新的子目录(位于您的顶级日志目录中)。然后,TensorBoard 会将每个作业视为一个新的“运行”,并创建一个很好的比较视图,这样您就可以看到培训在模型的迭代之间是如何不同的。

以下是 https://www.tensorflow.org/tensorboard/get_started的一个例子:

model = create_model()
...
model.compile(...)


log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)


model.fit(..., callbacks=[tensorboard_callback])

是的,我相信最终这方面是积极的。
例如,在我的脚本中,我通过 datetime自动化新的运行日志:

from datetime import datetime
now = datetime.now()
logdir = "tf_logs/.../" + now.strftime("%Y%m%d-%H%M%S") + "/"

然后,在运行 TensorBoard 时,如果您在父目录中运行 TensorBoard,则可以单击不同的运行开启和关闭。

如果你 知道你不关心以前的运行,并希望它从你的生活中消失,那么是的,你需要删除事件文件并重新启动 TensorBoard。

我刚想出了解决这个问题的办法。只需将每个 Events.out 文件放在日志目录中的一个单独文件夹中。你会得到一个不错的可视化张量板每次运行在不同的颜色。

添加以下代码片段到您的代码,它应该会自动重置您的张量板。

if tf.gfile.Exists(dirpath):
tf.gfile.DeleteRecursively(dirpath)

这将删除以前的日志。

这会自动删除日志目录。

import shutil


shutil.rmtree('log_dir', ignore_errors=True)

我有一个类似的问题,但与计算图的复制: 他们只是增加了张量板,当我调用

writer.add_graph(graph=sess.graph)

在我的案例中,它不是关于日志文件,而是关于 Jupiter Notebook 上下文。

我发现经过多次运行的木星细胞与图形定义的图形没有被重置,但出现在上下文作为一个重复,所以我补充说

tf.reset_default_graph()

在开始构建计算图之前。

希望能有所帮助。

有一个类似的问题,抛出了一个错误: ‘ 您必须提供一个值,用于带有 dtype float 和 form 的占位符张量‘ dense _ input’’。 对我有效的建议是:

from keras.backend import clear_session
# Before instantiating a tf.data.Dataset obj & before model creation, call:
clear_session()

还要确保为每个模型的 TensorBoard log _ dir 使用唯一的名称。然后,要查看所有的模型,从终端上的日志文件的父目录运行 TensorBoard,例如:

tensorboard --logdir <projDir>/logs/tf_log