tensorboard 平滑损失曲线代码

tensorboard 平滑损失曲线代码

标签(空格分隔): tensorflow 源码


咱们写论文,或者工作汇报的时候,希望展现非常漂亮的深度学习损失函数曲线图

在tensorflow中集成了很实用的tensorboard可视化工具,能够实时观测训练过程中的损失函数曲线图,以及建立的图模型,甚至在tensorboard可以可视化一些图像的分割或者分类结果,非常方面。但是,深度学习往往需要迭代很多次而且有时候会做数据扩充,导致损失函数浮动很大,比如说如下图所示曲线。

image_1cdp09ggc1s2l1f9f1b5todgi969.png-252.9kB

当然,tensorboard提供了我们平滑参数(Smoothing)如下图所示。

image_1cdp0blb918ao1qcu25lv0b15sdm.png-302.5kB

我们可以调节toolbar,可以画出非常漂亮的曲线下降或者上升曲线图。
image_1cdp0g84l4f61g8g181p1qg8cfi9.png-201.5kB
image_1cdp0ii8krrfpjv1opp16ot6b7m.png-157.7kB

怎么样是不是非常漂亮的训练图呢?但是,有个问题是,我们想通过orignal等专业的画图软件,画出非常完美的曲线图,这样可以放在paper和工作汇报上面。

tensorboard提供了下载借口,可以下载没有经过平滑后的数据,但是之前说了,没有平滑的曲线非常的不好看,现在我们需要做的是将下载下来的原始数据在本地进行平滑。笔者自己写了一个简单的平滑代码

import pandas as pd
import numpy as np
import os
def smooth(csv_path,weight=0.85):
    data = pd.read_csv(filepath_or_buffer=csv_path,header=0,names=['Step','Value'],dtype={'Step':np.int,'Value':np.float})
    scalar = data['Value'].values
    last = scalar[0]
    smoothed = []
    for point in scalar:
        smoothed_val = last * weight + (1 - weight) * point
        smoothed.append(smoothed_val)
        last = smoothed_val


    save = pd.DataFrame({'Step':data['Step'].values,'Value':smoothed})
    save.to_csv('smooth_'+csv_path)


if __name__=='__main__':
    smooth('test.csv')

测试:
tensorboard:

image_1cdp1alu8e7ns91ie81h556mn2j.png-165.9kB

本地平滑:

扫描二维码关注公众号,回复: 2454594 查看本文章

image_1cdp1c6n9158f17cjlkqvc51ar730.png-99.8kB

猜你喜欢

转载自blog.csdn.net/charel_chen/article/details/80364841