杀死tensorflow实例后如何"reset" tensorboard数据
How to "reset" tensorboard data after killing tensorflow instance
我正在为我构建的 cnn 模型测试不同的超参数,但在 Tensorboard 中查看摘要时我有一点烦恼。问题似乎是数据在连续运行中只是 "added",因此这些函数会导致奇怪的叠加,除非我将信息视为 "relative" 而不是 "by step"。看这里:
我试过杀掉tensorboard的进程并清除日志文件,但似乎还不够。
那么问题来了,我该如何重置这些信息?
谢谢!!
好的,出于某种原因,它以前不起作用,但现在可以了:
您必须清除 Tensorboard 的日志文件并终止其进程
终止进程 运行 fuser 6006/tcp -k
以释放端口 6006(如果你在 linux)并再次启动 tensorboard。
注意:您发布的解决方案(清除 TensorBoard 的日志文件并终止进程)会起作用,但不是首选,因为它会破坏有关您的训练的历史信息。
相反,您可以让每个新的训练作业写入一个新的子目录(您的顶级日志目录)。然后,TensorBoard 会将每个作业视为一个新的 "run" 并将创建一个很好的比较视图,以便您可以看到模型迭代之间的训练有何不同。
下面是来自 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") + "/"
然后当 运行ning TensorBoard 时,如果您在父目录中 运行 TensorBoard,您可以单击不同的 运行 打开和关闭。
如果您知道您不关心以前的运行并希望它从您的生活中消失,那么是的,您需要删除事件文件并重启 TensorBoard。
我刚刚找到了解决这个问题的方法。只需将每个 Events.out 文件放在日志目录中的单独文件夹中。你会在 tensorboard 中得到一个很好的可视化效果,每个 运行 都有不同的颜色。
将以下代码片段添加到您的代码中,它应该会自动重置您的张量板。
if tf.gfile.Exists(dirpath):
tf.gfile.DeleteRecursively(dirpath)
这将删除以前的日志。
这会自动删除日志目录。
import shutil
shutil.rmtree('log_dir', ignore_errors=True)
我遇到了类似的问题,但计算图重复:当我调用
时,它们刚刚添加到 tensorboard 中
writer.add_graph(graph=sess.graph)
就我而言,这与日志文件无关,而是与 Jupyter Notebook 上下文有关。
我发现在多次运行具有图形定义的 Jupyter 单元之后,图形没有被重置,而是作为副本出现在上下文中,所以我添加了
tf.reset_default_graph()
在开始构建计算图之前。
希望对您有所帮助。
有一个类似的问题,它引发了一个错误:'你必须为占位符张量 'dense_input' 提供一个 dtype float 和 shape 的值'。讨论了这个具体问题 here。
对我有用的建议使用了:
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
我正在为我构建的 cnn 模型测试不同的超参数,但在 Tensorboard 中查看摘要时我有一点烦恼。问题似乎是数据在连续运行中只是 "added",因此这些函数会导致奇怪的叠加,除非我将信息视为 "relative" 而不是 "by step"。看这里:
我试过杀掉tensorboard的进程并清除日志文件,但似乎还不够。
那么问题来了,我该如何重置这些信息?
谢谢!!
好的,出于某种原因,它以前不起作用,但现在可以了:
您必须清除 Tensorboard 的日志文件并终止其进程
终止进程 运行 fuser 6006/tcp -k
以释放端口 6006(如果你在 linux)并再次启动 tensorboard。
注意:您发布的解决方案(清除 TensorBoard 的日志文件并终止进程)会起作用,但不是首选,因为它会破坏有关您的训练的历史信息。
相反,您可以让每个新的训练作业写入一个新的子目录(您的顶级日志目录)。然后,TensorBoard 会将每个作业视为一个新的 "run" 并将创建一个很好的比较视图,以便您可以看到模型迭代之间的训练有何不同。
下面是来自 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") + "/"
然后当 运行ning TensorBoard 时,如果您在父目录中 运行 TensorBoard,您可以单击不同的 运行 打开和关闭。
如果您知道您不关心以前的运行并希望它从您的生活中消失,那么是的,您需要删除事件文件并重启 TensorBoard。
我刚刚找到了解决这个问题的方法。只需将每个 Events.out 文件放在日志目录中的单独文件夹中。你会在 tensorboard 中得到一个很好的可视化效果,每个 运行 都有不同的颜色。
将以下代码片段添加到您的代码中,它应该会自动重置您的张量板。
if tf.gfile.Exists(dirpath):
tf.gfile.DeleteRecursively(dirpath)
这将删除以前的日志。
这会自动删除日志目录。
import shutil
shutil.rmtree('log_dir', ignore_errors=True)
我遇到了类似的问题,但计算图重复:当我调用
时,它们刚刚添加到 tensorboard 中writer.add_graph(graph=sess.graph)
就我而言,这与日志文件无关,而是与 Jupyter Notebook 上下文有关。
我发现在多次运行具有图形定义的 Jupyter 单元之后,图形没有被重置,而是作为副本出现在上下文中,所以我添加了
tf.reset_default_graph()
在开始构建计算图之前。
希望对您有所帮助。
有一个类似的问题,它引发了一个错误:'你必须为占位符张量 'dense_input' 提供一个 dtype float 和 shape 的值'。讨论了这个具体问题 here。 对我有用的建议使用了:
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