最近在寫論文時,需要在一張圖中,同時繪製出多個模型的loss變化曲線,之前雖然在訓練模型時,也會使用Tensorboard來觀察loss曲線的變化,但是只限於觀看,並沒有對立裏面的數據進行提取和分析。後查找資料,成功解決問題,現將教程分享如下:
一、下載Tensorboard中的loss曲線的數據
1.選中左上角的 Show data download links
2.選中右下角的下載文件的格式,在這裏,我選擇的是csv格式,但實際數據下載下來的文件格式是.txt
二、修改下載後的文件內容及格式
選在csv文件格式下載後的文件,實際是.txt的格式,並且最上面一行是 Wall time,Step,Value
1.我們需要將最上面的一行刪除
2.將文件的後綴名直接改成 .csv,我們就得到了Tensorboard的csv數據格式
三、使用Pycharm 進行數據處理
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from matplotlib.font_manager import FontProperties
import csv
'''讀取csv文件'''
def readcsv(files):
csvfile = open(files, 'r')
plots = csv.reader(csvfile, delimiter=',')
x = []
y = []
for row in plots:
y.append((row[2]))
x.append((row[1]))
return x ,y
mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = 'NSimSun,Times New Roman'
plt.figure()
x2,y2=readcsv("scalars3.csv")
plt.plot(x2, y2, color='red', label='Default')
#plt.plot(x2, y2, '.', color='red')
x,y=readcsv("scalars.csv")
plt.plot(x, y, 'g',label='Without BN')
x1,y1=readcsv("scalars2.csv")
plt.plot(x1, y1, color='black',label='Without DW and PW')
x4,y4=readcsv("scalars4.csv")
plt.plot(x4, y4, color='blue',label='Without Residual learning')
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.ylim(0, 16)
plt.xlim(0, 104800)
plt.xlabel('Steps',fontsize=20)
plt.ylabel('Score',fontsize=20)
plt.legend(fontsize=16)
plt.show()