抱歉,如果两天的挫败感消失了……

问题:无法可靠地在jupyter笔记本(实际上在Jupyter Lab中)中运行Tensorboard

%tensorboard --logdir {logdir}

如果我取消了张量板进程,然后再次在笔记本中重新启动,它表示它正在重用无效的进程和端口,但是该进程已无效,并且netstat -ano | findstr:6006`没有显示任何内容,因此该端口也看起来是关闭的。

问题:如何以$ deity的名义使tensorboard从头开始重启,而忘记它对进程,端口等的了解?如果可以的话,我可以解决残留路径等问题。

已解决(我认为)已知问题:需要在Python字符串中转义反斜杠以获取正确的路径和其他OS语法。避免在路径中留空格,确保正确的大写字母...

环境:通过conda install安装了Anaconda和Tensforflow-GPU 2的Win 64位家庭版-TF正在工作,并将数据写入通过回调提供的指定路径
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1) # logdir is the full path

但是我不能在笔记本中可靠地启动Tensorboard。

我发现如果我启动一个Anaconda命令窗口并从那里调用tensorboard,则tensorboard可以正常启动...
(TF2GPU_Anaconda) C:\Users\Julian>tensorboard --logdir "a:\tensorboard\20200102-112749"
2020-01-02 11:53:58.478848: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.0.0 at http://localhost:6006/ (Press CTRL+C to quit)

如上所述,它可以在localhost:6006的Chrome中访问(特别是http://localhost:6006/#scalars&run=20200102-112749%5Ctrain)(我将忽略张量板的其他问题,例如标量刷新失败,图形上的奇数消息等)
%tensorboard --logdir {logdir}

然后在笔记本和单独的chrome选项卡中显示tensorboard。

但是! ,而张量板在笔记本中报告它正在重用旧的无效PID,而实际上它是在完全不同的新PID上

我在做什么错,我该如何完全重置张量板?

PS 实际上是最后一次(成功!)调用与
%tensorboard --logdir {makeWindowsCmdPath('A:\\tensorboard\\20200102-112749')}

其中makeWindowsCmdPath定义为
def makeWindowsCmdPath(path):
    return '\"' + str(path) + '\"'

更新 2020年1月3日在Github的注释中上载了最终成功的MWE,以应对包括张量板的PID引用错误的问题

最佳答案

嗨,很抱歉得知您遇到了问题。完全是
可能是您所描述的一切都是准确的,也是我的
过错。 :-)



临时目录中有一个名为.tensorboard-info的目录
维护我们的TensorBoard作业的尽力而为注册表
认为正在运行。 TensorBoard启动时(以任何方式,包括
使用%tensorboard),它将“信息文件”写入该目录,然后
当您使用%tensorboard时,我们首先检查是否“兼容”
实例”(相同的工作目录和CLI参数)仍在运行,如果
因此,请重新使用它。当TensorBoard实例完全关闭时,它
删除其自己的信息文件。这个想法是,只要TensorBoard
彻底关闭,我们应该始终有一个准确的记录
进程是实时的,并且由于此注册表位于临时目录中,因此任何
由于硬关机而导致的错误将是短暂的。

但这是我犯错的地方:来自POSIX世界,而不是
我对Windows应用程序开发非常熟悉,但我没有意识到
Windows临时目录实际上并未自动删除,
曾经。因此,任何簿记错误会无限期存在。

因此,您问题的答案是:“删除.tensorboard-info位于tempfile.gettempdir()下的目录”(最好是当您
没有任何正在运行的TensorBoard实例)。

我们可以通过一些方法在TensorBoard中合理地解决此问题
核心:请参见https://github.com/tensorflow/tensorboard/issues/2483
开始,我也考虑过分期摊销的方法,例如让每个
TensorBoard实例在启动时执行其他实例的一些清理
时间。我们还没有实现这些措施。

让我知道这是否有帮助或是否无法解决您的问题。

关于python - 尝试重用已终止的Windows PID时如何重置Tensorboard,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59563025/

10-13 04:20