tensorboard 平滑损失曲线代码
标签(空格分隔): tensorflow 源码
咱们写论文,或者工作汇报的时候,希望展现非常漂亮的深度学习损失函数曲线图
在tensorflow中集成了很实用的tensorboard可视化工具,能够实时观测训练过程中的损失函数曲线图,以及建立的图模型,甚至在tensorboard可以可视化一些图像的分割或者分类结果,非常方面。但是,深度学习往往需要迭代很多次而且有时候会做数据扩充,导致损失函数浮动很大,比如说如下图所示曲线。
当然,tensorboard提供了我们平滑参数(Smoothing)如下图所示。
我们可以调节toolbar,可以画出非常漂亮的曲线下降或者上升曲线图。
怎么样是不是非常漂亮的训练图呢?但是,有个问题是,我们想通过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:
本地平滑: