我正在测试不同的超参数为 cnn 模型我建立,但我有一个小的烦恼,当查看在 Tensorboard 的摘要。问题似乎是数据只是在连续运行中“添加”,所以函数会导致奇怪的叠加,除非我将信息看作“相对”而不是“逐步”。看这里:
我已经尝试杀死张量板的进程和删除日志文件,但似乎是不够的。
所以问题是,我该如何重置这些信息?
谢谢!
好吧,出于某种原因,它以前没有工作,但现在它做到了:
您必须删除 Tensorboard 的日志文件并终止其进程
终止该进程后,运行 fuser 6006/tcp -k以释放端口6006(如果您在 linux 中) ,并再次触发张量板。
fuser 6006/tcp -k
注意: 您发布的解决方案(删除 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自动化新的运行日志:
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