Tensorboard Error: No dashboards are active for current data set
Tensorboard Error: No dashboards are active for current data set
我正在尝试使用 Tensorboard,但每次我 运行 使用 Tensorflow 的任何程序时,我都会在 localhost:6006 查看可视化时收到错误消息
这是我的代码
a = tf.add(1, 2,)
b = tf.multiply(a, 3)
with tf.Session() as sess:
writer = tf.summary.FileWriter("output", sess.graph)
print(sess.run(b))
writer.close()
当我进入命令提示符并输入
tensorboard --logdir=C:\path\to\output\folder
它returns和
TensorBoard 0.1.8 at http://MYCOMP:6006 (Press CTRL+C to quit)
当我转到 localhost:6006 时,它显示
No dashboards are active for the current data set.
Probable causes:
- You haven’t written any data to your event files.
- TensorBoard can’t find your event files.
我看过这个 link (Tensorboard: No dashboards are active for the current data set) 但它似乎没有解决这个问题
我 运行 正在 Windows 10
我该怎么做才能解决这个问题?我是否在命令提示符中为 Tensorboard 提供了正确的路径?
提前致谢
嗯,你的代码有几个问题。
- 您正在创建摘要编写器 (
tf.summary.FileWriter
),但您实际上并没有用它写任何东西。 print(sess.run(b))
与 tensorboard 无关,如果你希望这对它有一些影响的话。它只是打印 b
的值
- 您没有创建
summary
对象来连接某些值。
- 您可能为 tensorboard 输入了错误的文件夹。
更具分析性:
- 您需要 summary object 才能写摘要。例如
tf.summary.scalar
将标量写入摘要。就像是
tf.summary.scalar("b_value", b)
将 b
的值写入摘要。
- 然后您实际上需要 运行 将您的摘要操作放入会话中以使其正常工作,例如:
summary = sess.run(summary_scalar)
.
- 用您之前定义的写入器写入值:
writer.add_summary(summary)
.
- tensorboard现在有东西可以看,使用
tensorboard --logdir=output
在终端中
- 在一般情况下,您可能需要
tf.summary.merge_all()
传递给 run
以便将所有摘要收集在一起。
希望对您有所帮助。
您的问题可能与您尝试启动 tensorboard
的驱动器以及 logdir
所在的驱动器有关。 Tensorboard
使用冒号分隔可选的 运行 名称和 logdir 标志中的路径,因此您的路径被解释为名称为 C 的 \path\to\output\folder。
这可以通过从与日志目录相同的驱动器启动 tensorboard
或提供明确的 运行 名称来解决,例如logdir=mylogs:C:\path\to\output\folder
请参阅 here 以了解该问题。
当我 运行 TensorFlow (https://www.tensorflow.org/programmers_guide/tensorboard_histograms) 教程时,我 运行 遇到了同样的问题。我继续尝试上面 hpabst 引用的解决方案。它像冠军一样工作。在终端中(我在 CentOS 中是 运行)- I 运行: tensorboard --log =mydir: '~/mlDemo/'
在 tensorboard 目录中找到 main.py
的路径并 复制它 。它应该是这样的:
C:/Users/<Your Username>/Anaconda3/envs/tensorflow/Lib/site-packages/tensorboard/main.py
或
C:/Users/<Your Username>/anaconda/envs/tf/lib/python3.5/site-packages/tensorboard/main.py
一旦知道正确的路径,运行 Anaconda Prompt 中的此命令将使用 tensorboard 目录中 main.py
的路径。这对我有用 Windows.
python C:/Users/Username/Anaconda3/envs/tensorflow/Lib/site-packages/tensorboard/main.py --logdir=foo:<path to your log directory>
学分:
我也在使用 windows 10。我在同一驱动器、不同驱动器和本地路径中使用 运行 张量板尝试了您的代码。在这三种情况下,我都能看到图表。
一个解决方案是,也许您需要更改主机(我也无法使用 localhost:6006 进行可视化)。尝试 http://MYCOMP:6006 检查您是否发现任何差异。
注意:我的tensorboard版本是1.8.0(也许你可以更新你的tensorboard看看有什么不同)
如果是 Windows,我有一个解决方法。
cd /path/to/log
tensorboard --logdir=./
这里可以正常使用路径。
请记住不要给它空格,因为 logdir = ./.
这给了我一个错误:
No dashboards are active for the current data set. Probable causes: -
You haven’t written any data to your event files. - TensorBoard can’t
find your event files.
试试这个:
tensorboard --logdir="C:\path\to\output\folder"
在Windows10中,这个命令有效
tensorboard --logdir=training/
这里training是写输出文件的目录。请注意,它没有任何引号,末尾有一个斜杠 (/)。两者都很重要。
观察到一旦 tensorflow 进入不良状态,它每次都会抛出问题,因为在后续运行中,
- 它不会自动杀死以前的进程
- 它在启动仪表板时使用以前的状态
缓解不良状态的步骤:
- 杀死所有 运行 张量板进程。
- 清除之前的 tensorboard 状态。
在 jupyter notebook 中
! powershell "echo 'checking for existing tensorboard processes'"
! powershell "ps | Where-Object {$_.ProcessName -eq 'tensorboard'}"
! powershell "ps | Where-Object {$_.ProcessName -eq 'tensorboard'}| %{kill $_}"
! powershell "echo 'cleaning tensorboard temp dir'"
! powershell "rm $env:TEMP\.tensorboard-info\*"
! powershell "ps | Where-Object {$_.ProcessName -eq 'tensorboard'}"
%tensorboard --logdir="logs\fit" --host localhost
如果在jupyter中超时,那么在浏览器中去http://localhost:6006/#scalars查看
尝试将目录放在引号内。
示例:
tensorboard --logdir="C:/Users/admin/Desktop/ML/log"
如果有人仍然遇到这个问题,我建议尝试不同的端口,例如 tensorboard --logdir=logs --port 5000
。为我工作。
好吧,我几乎尝试了这里的所有解决方案,但没有任何效果。几周后,我终于解决了这个问题。这是我所做的。
- 杀掉tensorboard已有的进程。
- 关闭所有 Jupiter 笔记本实例。
- 从我的本地删除了 Tensorboard 缓存文件 - C:\Users\sethuri\AppData\Local\Temp
- 启动 Jupyter notebook 实例并调用 tensorboard
- 我没有先看到视觉效果,但在重新加载页面后它起作用了
如果端口在之前的运行中仍处于打开状态,则需要关闭该端口。我写了一个关闭端口的函数。这是一个例子:
import tensorflow as tf
import datetime
import os
import webbrowser
import subprocess
import pandas as pd
import io
import re
path = os.getcwd()
port = 6006
def close_port(port):
open_ports = subprocess.getoutput(f"netstat -ano | findstr :{port}") #os.system(f'netstat -ano | findstr :{port}')
open_ports = re.sub("\s+", " ", open_ports)
open_ports = open_ports.lstrip()
open_ports = open_ports.replace(" TCP", "\nTCP")
open_ports_io = io.StringIO(open_ports)
if len(open_ports) > 0:
open_ports = pd.read_csv(open_ports_io, sep=' ', header=None)
for i in range(len(open_ports)):
if open_ports.loc[i, 3] == "LISTENING":
res = subprocess.getoutput(f"taskkill /pid {open_ports.loc[i, 4]} /F")
print(res)
#load a dataset and define a model for training
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
def create_model():
return tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
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(x=x_train,
y=y_train,
epochs=3,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
close_port(port)
webbrowser.open(f'http://localhost:{port}/')
os.system(f'tensorboard --logdir={path}/logs/fit --port {port}')
我正在尝试使用 Tensorboard,但每次我 运行 使用 Tensorflow 的任何程序时,我都会在 localhost:6006 查看可视化时收到错误消息
这是我的代码
a = tf.add(1, 2,)
b = tf.multiply(a, 3)
with tf.Session() as sess:
writer = tf.summary.FileWriter("output", sess.graph)
print(sess.run(b))
writer.close()
当我进入命令提示符并输入
tensorboard --logdir=C:\path\to\output\folder
它returns和
TensorBoard 0.1.8 at http://MYCOMP:6006 (Press CTRL+C to quit)
当我转到 localhost:6006 时,它显示
No dashboards are active for the current data set. Probable causes: - You haven’t written any data to your event files. - TensorBoard can’t find your event files.
我看过这个 link (Tensorboard: No dashboards are active for the current data set) 但它似乎没有解决这个问题
我 运行 正在 Windows 10
我该怎么做才能解决这个问题?我是否在命令提示符中为 Tensorboard 提供了正确的路径?
提前致谢
嗯,你的代码有几个问题。
- 您正在创建摘要编写器 (
tf.summary.FileWriter
),但您实际上并没有用它写任何东西。print(sess.run(b))
与 tensorboard 无关,如果你希望这对它有一些影响的话。它只是打印b
的值
- 您没有创建
summary
对象来连接某些值。 - 您可能为 tensorboard 输入了错误的文件夹。
更具分析性:
- 您需要 summary object 才能写摘要。例如
tf.summary.scalar
将标量写入摘要。就像是tf.summary.scalar("b_value", b)
将b
的值写入摘要。 - 然后您实际上需要 运行 将您的摘要操作放入会话中以使其正常工作,例如:
summary = sess.run(summary_scalar)
. - 用您之前定义的写入器写入值:
writer.add_summary(summary)
. - tensorboard现在有东西可以看,使用
tensorboard --logdir=output
在终端中 - 在一般情况下,您可能需要
tf.summary.merge_all()
传递给run
以便将所有摘要收集在一起。
希望对您有所帮助。
您的问题可能与您尝试启动 tensorboard
的驱动器以及 logdir
所在的驱动器有关。 Tensorboard
使用冒号分隔可选的 运行 名称和 logdir 标志中的路径,因此您的路径被解释为名称为 C 的 \path\to\output\folder。
这可以通过从与日志目录相同的驱动器启动 tensorboard
或提供明确的 运行 名称来解决,例如logdir=mylogs:C:\path\to\output\folder
请参阅 here 以了解该问题。
当我 运行 TensorFlow (https://www.tensorflow.org/programmers_guide/tensorboard_histograms) 教程时,我 运行 遇到了同样的问题。我继续尝试上面 hpabst 引用的解决方案。它像冠军一样工作。在终端中(我在 CentOS 中是 运行)- I 运行: tensorboard --log =mydir: '~/mlDemo/'
在 tensorboard 目录中找到 main.py
的路径并 复制它 。它应该是这样的:
C:/Users/<Your Username>/Anaconda3/envs/tensorflow/Lib/site-packages/tensorboard/main.py
或
C:/Users/<Your Username>/anaconda/envs/tf/lib/python3.5/site-packages/tensorboard/main.py
一旦知道正确的路径,运行 Anaconda Prompt 中的此命令将使用 tensorboard 目录中 main.py
的路径。这对我有用 Windows.
python C:/Users/Username/Anaconda3/envs/tensorflow/Lib/site-packages/tensorboard/main.py --logdir=foo:<path to your log directory>
学分:
我也在使用 windows 10。我在同一驱动器、不同驱动器和本地路径中使用 运行 张量板尝试了您的代码。在这三种情况下,我都能看到图表。
一个解决方案是,也许您需要更改主机(我也无法使用 localhost:6006 进行可视化)。尝试 http://MYCOMP:6006 检查您是否发现任何差异。
注意:我的tensorboard版本是1.8.0(也许你可以更新你的tensorboard看看有什么不同)
如果是 Windows,我有一个解决方法。
cd /path/to/log
tensorboard --logdir=./
这里可以正常使用路径。 请记住不要给它空格,因为 logdir = ./.
这给了我一个错误:
No dashboards are active for the current data set. Probable causes: - You haven’t written any data to your event files. - TensorBoard can’t find your event files.
试试这个:
tensorboard --logdir="C:\path\to\output\folder"
在Windows10中,这个命令有效
tensorboard --logdir=training/
这里training是写输出文件的目录。请注意,它没有任何引号,末尾有一个斜杠 (/)。两者都很重要。
观察到一旦 tensorflow 进入不良状态,它每次都会抛出问题,因为在后续运行中,
- 它不会自动杀死以前的进程
- 它在启动仪表板时使用以前的状态
缓解不良状态的步骤:
- 杀死所有 运行 张量板进程。
- 清除之前的 tensorboard 状态。
在 jupyter notebook 中
! powershell "echo 'checking for existing tensorboard processes'"
! powershell "ps | Where-Object {$_.ProcessName -eq 'tensorboard'}"
! powershell "ps | Where-Object {$_.ProcessName -eq 'tensorboard'}| %{kill $_}"
! powershell "echo 'cleaning tensorboard temp dir'"
! powershell "rm $env:TEMP\.tensorboard-info\*"
! powershell "ps | Where-Object {$_.ProcessName -eq 'tensorboard'}"
%tensorboard --logdir="logs\fit" --host localhost
如果在jupyter中超时,那么在浏览器中去http://localhost:6006/#scalars查看
尝试将目录放在引号内。
示例:
tensorboard --logdir="C:/Users/admin/Desktop/ML/log"
如果有人仍然遇到这个问题,我建议尝试不同的端口,例如 tensorboard --logdir=logs --port 5000
。为我工作。
好吧,我几乎尝试了这里的所有解决方案,但没有任何效果。几周后,我终于解决了这个问题。这是我所做的。
- 杀掉tensorboard已有的进程。
- 关闭所有 Jupiter 笔记本实例。
- 从我的本地删除了 Tensorboard 缓存文件 - C:\Users\sethuri\AppData\Local\Temp
- 启动 Jupyter notebook 实例并调用 tensorboard
- 我没有先看到视觉效果,但在重新加载页面后它起作用了
如果端口在之前的运行中仍处于打开状态,则需要关闭该端口。我写了一个关闭端口的函数。这是一个例子:
import tensorflow as tf
import datetime
import os
import webbrowser
import subprocess
import pandas as pd
import io
import re
path = os.getcwd()
port = 6006
def close_port(port):
open_ports = subprocess.getoutput(f"netstat -ano | findstr :{port}") #os.system(f'netstat -ano | findstr :{port}')
open_ports = re.sub("\s+", " ", open_ports)
open_ports = open_ports.lstrip()
open_ports = open_ports.replace(" TCP", "\nTCP")
open_ports_io = io.StringIO(open_ports)
if len(open_ports) > 0:
open_ports = pd.read_csv(open_ports_io, sep=' ', header=None)
for i in range(len(open_ports)):
if open_ports.loc[i, 3] == "LISTENING":
res = subprocess.getoutput(f"taskkill /pid {open_ports.loc[i, 4]} /F")
print(res)
#load a dataset and define a model for training
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
def create_model():
return tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
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(x=x_train,
y=y_train,
epochs=3,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
close_port(port)
webbrowser.open(f'http://localhost:{port}/')
os.system(f'tensorboard --logdir={path}/logs/fit --port {port}')