基于event_accumulator保存tensorboard网页中的图片-201214

编者按:在日常使用tensorboard中发现loss可以保存为json和csv,但图片找不到接口,这里记录自己的尝试过程,有幸能成功,做此记录。

一、打开tensorboard

file_path为tensorboard目录,即该文件下你可以看到“events.out.tfevents.1607934613.czey”类似的文件,这里就是记录数据的文件。记下来,不要老是回过来找怎么打开,我就是这么过来的~

tensorboard --logdir file_path 或者
tensorboard --logdir=file_path

二、常规保存loss数据

在这里插入图片描述
如上图,左边的信息可以简单了解下(勾选变化数值即可)。图下方的下箭头就是保存为SVG格式(可缩放矢量图形,可以搜索”SVG 获取数据" ),我们的目标是数据自行后处理,所以需要继续操作。在勾上"Show data download links"后点击"run to download"里的点,就出现可以保存json和csv的提示了,如下图所以。
在这里插入图片描述

三、 通过event_accumulator保存images下的图片

在IMAGES下的图片,目前还没有发现可以直接下载图片的接口,如有请告知,非常感谢!平时也是直接截图,但始终不肯向恶势力低头,于是自己捣鼓了下。
参考网址1:How do you read Tensorboard files programmatically?
参考网址2:tf.compat.v1.train.summary_iterator
参考网址3:event_accumulator_test.py
草考网址4:How to convert base64 string to image? [duplicate]
通过参考网址1了解到参考网址2,利用tf.compat.v1.train.summary_iterator,可以尝试下,读取出来的数据不友好,也就没有研究怎么转化为图片。参考网址3简单看了下,没找到自己需要的,估计要运行下才能理解深刻些,不提也罢!
继续解读参考网址2,示例中的数值表示个数,防止太多导致网页崩溃,如设置0则读取全部。读出来的ea.Scalars是list结构,所以可以通过ea.Scalars(‘loss/l1’)[0].value读取其数值。在读取ea.Images时有如下:
在这里插入图片描述
'b\89PNG’让我感觉接近真理了,老铁们,这不就类似用UltraEdit直接打开图片的16进制嘛!接下来就是参考网址4,将其再写回图片即可啦!So,完整参考代码和jupyter截图如下(这里后来写了循环完整提取),老铁们根据自己的参数进行修改:

# In[1]:
from tensorboard.backend.event_processing import event_accumulator
import pandas as pd
# In[2]:
fn = '/home/czey/DFNet/DFNet_UI/logs/celeba/simpler/2020-12-14-16-30-13/tensorboard/events.out.tfevents.1607934613.czey'
# In[3]:
ea = event_accumulator.EventAccumulator(fn,
 size_guidance={ # see below regarding this argument
     event_accumulator.COMPRESSED_HISTOGRAMS: 500,
     event_accumulator.IMAGES: 0,  # 0表示所有
     event_accumulator.AUDIO: 4,
     event_accumulator.SCALARS: 0,
     event_accumulator.HISTOGRAMS: 1,
 })
# In[4]:
ea.Reload()
# In[5]:
ea.Tags()
# In[6]:
print(ea.Scalars('loss/l1')[0].value)
pd.DataFrame(ea.Scalars(''loss/l1’)).to_csv('LossL1.csv')  # 利用pandas转化为csv
# In[7]:
imgs_result = ea.Images('deepfusion')  # 注意大小写
len(imgs_result)
# In[8]:
imgs_result[0].encoded_image_string
# In[9]:
for i in range(len(imgs_result)):
    filename = str(i) + '.png'  
    with open(filename, 'wb') as f:
        f.write(imgs_result[i].encoded_image_string)

在这里插入图片描述
编者后计:本来就是一个截图的事,非要整这些!但是,生命不息,折腾不止!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值