【Python数据处理】批量导出深度学习网络训练生成的event格式文件中的数据到同一excel表的不同sheet

tensorboard的确很香,尽管可以显示训练过程当中的数据,但是有一点不太友好的是,无法在tensorboard生成的数据界面中任意操作数据,这就有些不爽,数据就在眼前,可就是玩弄不了,而且tensorboard导出来的图说实话也不是很美观,所以考虑先把数据导出到excel,后续就可以随愿了。

完整代码

代码已添加注释,下文有简要分析,很容易理解

# coding: utf-8
from tensorboard.backend.event_processing import event_accumulator

import numpy as np
import pandas as pd

def readEvent(event_path, scalarName):
    '''
        读tensorboard生成的event文件中指定的标量值
            event_path:event文件路径
            scalarName:要操作的标量名称
    '''
    event = event_accumulator.EventAccumulator(event_path)
    event.Reload()
    print("\033[1;34m数据标签:\033[0m")
    print(event.Tags())
    print("\033[1;34m标量数据关键词:\033[0m")
    print(event.scalars.Keys())
    value = event.scalars.Items(scalarName)
    print("你要操作的scalar是:",scalarName)
    return value

def exportToexcel(scalarNameList, excelName):
    '''
        将不同的标量数据导入到同一个excel中,放置在不同的sheet下
            注:excel中sheet名称的命名不能有:/\?*这些符号
    '''
    writer = pd.ExcelWriter(excelName)
    for i in range(len(scalarNameList)):
        scalarName = scalarNameList[i]
        scalarValue = readEvent(event_path,scalarName)
        data = pd.DataFrame(scalarValue)
        if scalarName == 'Loss/critic_loss':
            scalarName = 'critic_loss'
        if scalarName == 'Loss/actor_loss':
            scalarName = 'actor_loss'
        data.to_excel(writer,sheet_name=scalarName) 
    writer.save()
    print("数据保存成功")


if __name__ == "__main__":
    event_path ="./events.out.tfevents.1587174099.eden"
    scalarNameList = [ 'score', 'Loss/critic_loss', 'Loss/actor_loss']

    excelName = "data.xlsx"
    exportToexcel(scalarNameList,excelName)

分析:readEvent函数:重载event文件,并读取指定标量名称的数据,其返回值value是一个list。exportToexcel(scalarNameList, excelName)函数是借助pandas将所获取到的对应的标量数据转换为一个Dataframe,然后导出到excel中,由于操作的是多个scalar的数据,要想导入到一个excel中,首先需要借助ExcelWriter创建一个writer,然后将要导入的数据一起添加到这个writer中,且对sheet定义不同的名称(这里就以scalar的名称命名)即可。

在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值