gpt4 book ai didi

python - 如何在不打开新类别的情况下将图像数据写入tensorboard

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:58 34 4
gpt4 key购买 nike

我编写了一个 Keras/Tensorflow 回调,将混淆矩阵写入 Tensorboard 中的“图像”选项卡。这在 TF 2.1 中运行良好。不幸的是,我必须将其转换为 TF 1.14,因为其他软件包依赖于此版本。

除了 Tensorboard 报告之外,一切都运行良好(或多或少)。

问题

正如您在下面的屏幕截图中看到的,有很多类别(?标签? channel ?我不确定术语),而不是只有一个。

screenshot: multiple categories for images

似乎与这个问题相关,像“val_loss”这样的训练标量只绘制第一个数据点,之后什么也不绘制。查看第二张截图

screenshot: scalars showing one data point

此外,Tensorboard 正在打印以下错误:
File <path/to/event-file> updated even though the current file is <path/to/new-event-file>

所以我认为我的 TF FileWriters 在写入位置上存在分歧。

关于混淆矩阵回调:编写函数如下所示:

def _figure_to_summary(self, fig, step):

# attach a new canvas if not exists
if fig.canvas is None:
matplotlib.backends.backend_agg.FigureCanvasAgg(fig)

fig.canvas.draw()

w, h = fig.canvas.get_width_height()

img = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
img = img.reshape((1, h, w, 3))

with K.get_session().as_default():
tensor = tf.constant(img)
image = tf.summary.image(self.title, tensor).eval()
self._summary_writer.add_summary(image, global_step=step)
self._summary_writer.flush()

fig 是混淆矩阵的 matplot 图,step 为 int,这应该使 Tensorboard 能够在图像上添加小 slider 以显示矩阵的历史记录。

模型训练如下:

run_id = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
tb_path = os.path.join("tensor/", run_id)

tb_reporter = TensorBoard(tb_path)
summ_wr = FileWriter(tb_path)

conf_matr = ConfusionMatrix(va, TARGET_CLASSES.keys(), summ_wr, normalize=True)
cb_list = [tb_reporter, conf_matr]
model.fit(tr, epochs=500, validation_data=va, callbacks=cb_list)

哪里summ_wr变成self._summary_writer回调。

我尝试了什么

我只是尝试改变摘要的编写方式。尝试 tf.merge_all(),以各种组合打开、关闭和重新打开 FileWriter,但没有任何改变。当我停用自定义回调时,Tensorboard 回调将按预期工作。

我的问题

如何每次将图像数据写入同一类别?

图像会出现滚动条吗?

如何解决 Keras Tensorboard 回调不显示其数据的问题?

我认为所有问题都是相关的,解决一个问题就可以解决所有问题,但我完全不知道如何做到这一点。

非常感谢您的建议:)

编辑:我刚刚发现这个问题:Tensorboard Image Summaries这似乎解决了问题,不幸的是答案没有很多上下文,所以我不知道如何将解决方案集成到代码中。

最佳答案

我找到的解决方案由两部分组成。

首先:我从 keras 的 Tensorboard 回调中窃取了 FileWriterTensorboard.writer 包含调用 set_model 后的 FileWriter

第二:Summary 必须通过构造函数创建并传递 tag 关键字。这迫使图像进入同一组,并且作者不会互相干扰。

我在这里找到了解决方案的第二部分:TensorBoard: How to write images to get a steps slider?

关于python - 如何在不打开新类别的情况下将图像数据写入tensorboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60197707/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com