引言

我们在进行关于深度学习的实验的时候,往往离不开tensorboard这个数据可视化工具,不管是pytorch还是tensorboard都可以使用这个工具进行数据可视化的实现。tensorboard的安装也很简单,通过pip install tensorboard就可以安装,当然如果是pytorch用户,需要安装tensorboardX。

在做实验的时候他可以给我们很多的帮助,而且我们还可以通过调节滤波系数,来实现数据滤波,更好地看清数据的走势。

不管是数据还是滤波后的曲线,对于需要写论文或者做笔记的同学来说都是必不可少的东西,那今天我们就来介绍下如何使用tensorboard的数据。

图片下载

首先对于只想做笔记的同学来说,只将图下载下来可以供以后查阅就可以了,因此就不需要进行额外的数据处理的步骤,tensorboard图片的下载非常简单,首先需要我们勾选这个选项

然后我们会得到图片的下载选项,我们点进去就可以完成图片的下载了

数据下载

当然对于需要写论文的同学来说,单纯的tensorboard的图片就可能不够用了,我们需要获取原始数据,然后利用专业的做题软件进行图片绘制。这里我们可以从pytorch或者tensorboard生成数据时,存放数据记录的位置出查找对应的记录,然后进行下载。对于pytorch来说,记录的一般命名文件为这种形式:

以enents开头。我们下载的时候可以将这个记录的文件夹一并加载,宫后续代码使用。

原始数据提取

from tensorboard.backend.event_processing import event_accumulator
import argparse
import pandas as pd
from tqdm import tqdm
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--path', type=str, required=True)
    parser.add_argument('--new_path', type=str, required=True)
    args = parser.parse_args()
    event_data = event_accumulator.EventAccumulator(args.in_path)  
    event_data.Reload() 
    keys = event_data.scalars.Keys()  
    i = 0
    for key in tqdm(keys):
        if key != 'train/total_loss_iter':  # Other attributes' timestamp is epoch.Ignore it for the format of csv file
            name = "%d" % (i)
            df = name
            df = pd.DataFrame()# my first column is training loss per iteration, so I abandon it
            df[key] = pd.DataFrame(event_data.Scalars(key)).value
            df.to_csv(args.ex_path+name)
        i = i+1
if __name__ == '__main__':
    main()

这里我们使用tensorboard.backend.event_processing包实现数据提取,并借助pandas做中间过度,最终实现的是将所有的记录,根据数量多少,生成对应数目的原始数据文件。

数据滤波

数据滤波,采用滑动平均滤波的方式进行,滤波系数 越大,滤波效果越强,采用matlab代码编写:

data= load('E:\One_drive\OneDrive\program\matlab_code\RL_data_dealing\data\15M4');
len13 = length(data);
Len13 = 1:len13;
last = 100;可以采用第一个数据值大小
weight = 0.9;
tmp2 = zeros(1,len13);
for i = 1:len13
   smoothed_val = last * weight + (1 - weight) * data(i,2);
   tmp2(i) = smoothed_val+220;
   last = smoothed_val;
end

May the force be with you !