You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow FileWriter写入异常:TensorBoard提示无图像数据

排查TensorBoard不显示Matplotlib图片的问题

我帮你分析了代码,找到了两个核心问题,导致TensorBoard无法识别图片数据:

1. 未明确指定图片保存格式为PNG

TensorBoard仅支持PNG格式的图片数据,但你调用plt.savefig(s)时,因为没有指定文件名,Matplotlib无法自动推断格式(部分环境可能默认PNG,但存在兼容性风险),导致编码后的图片数据无法被TensorBoard解析。

2. 复用同一个tf.Summary对象导致数据异常

你在循环外创建了唯一的summary = tf.Summary(),每次循环都往这个对象里追加新的图片数据,再写入TensorBoard。这种复用会让每次写入的summary包含之前所有图片的信息,干扰TensorBoard的解析逻辑。

修改后的可运行代码

import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import tensorflow as tf
import io

class bla():
    def __init__(self, sess):
        self.sess = sess

class Dummy():
    def __init__(self, sess):
        self.fill_scheme = {
            'adv': np.linspace(0, 20),
            'butt': np.linspace(0, 20) * -1
        }
        self.model = bla(sess)
    def test(self, name=100):
        checker = hasattr(self.model, 'sess')
        writer = tf.summary.FileWriter('./im_data', graph=None if not checker else self.model.sess.graph)
        
        for k, v in self.fill_scheme.items():
            # 每次循环创建全新的Summary对象,避免数据累积
            summary = tf.Summary()
            # 使用with语句自动管理figure生命周期,无需手动关闭
            with plt.figure():
                plt.plot(v)
                s = io.BytesIO()
                # 明确指定保存为PNG格式,适配TensorBoard要求
                plt.savefig(s, format='png')
            
            img_summary = tf.Summary.Image(encoded_image_string=s.getvalue())
            summary.value.add(tag='im/it_{}_{}'.format(name, k), image=img_summary)
            writer.add_summary(summary, name)
        
        writer.close()

sess = tf.InteractiveSession()
a = Dummy(sess)
a.test()

额外优化提示

  • 用with plt.figure()替代手动创建和清理figure,既简洁又能避免内存泄漏。
  • 如果你的环境是TensorFlow 2.x,建议迁移到tf.summary.create_file_writer+tf.summary.image的现代API,但上述修改完全适配你当前的TF 1.x风格代码。

修改后重新运行代码,再启动TensorBoard指定logdir=./im_data,就能看到两张折线图了。

内容的提问来源于stack exchange,提问作者IanQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:21:49