目录
前言
tensorboard通常被用来实时记录训练过程中的损失曲线,有的时候我们需要导出这些曲线图,这里我介绍一种从tensorboard导出数据,并使用python重新绘制曲线的方法。
数据保存为csv文件
首先点击左上角的SCALARS
然后勾选上Show data down links这一选项
会发现图像右下角多了一部分,点击右下角画框部分
点击出现的这个点
点击csv
这时候便会下载下来数据
python绘制曲线图
接下来我们使用python来绘制曲线图
import pandas as pd
import matplotlib.pyplot as plt
# 读取第一个CSV文件
csv_file_path1 = 'test_loss.csv' # 替换为第一个CSV文件的路径
df1 = pd.read_csv(csv_file_path1, header=None, skiprows=1)
# 提取第一个CSV文件的x和y轴数据
x_data1 = df1.iloc[1:, 1].astype(float)
y_data1 = df1.iloc[1:, 2].astype(float)
# 读取第二个CSV文件
csv_file_path2 = 'train_loss.csv' # 替换为第二个CSV文件的路径
df2 = pd.read_csv(csv_file_path2, header=None, skiprows=1)
# 提取第二个CSV文件的x和y轴数据
x_data2 = df2.iloc[1:, 1].astype(float)
y_data2 = df2.iloc[1:, 2].astype(float)
# 设置绘图风格,使用科学论文常见的线条样式和颜色
plt.style.use('seaborn-whitegrid')
# 设置字体和字号
font = {'family': 'serif',
'serif': 'Times New Roman',
'weight': 'normal',
'size': 15,
}
plt.rc('font', **font)
# 绘制第一幅图像
plt.figure(1)
plt.plot(x_data1, y_data1,color='blue', linewidth=2)
plt.xlabel('epochs')
plt.ylabel('test_loss')
plt.title('test_loss')
plt.tight_layout()
# 调整布局使得图像不溢出
plt.savefig('test_loss.svg', format='svg', bbox_inches='tight')
# 绘制第二幅图像
plt.figure(2)
plt.plot(x_data2, y_data2, color='red', linewidth=2)
plt.xlabel('epochs')
plt.ylabel('train_loss')
plt.title('train_loss')
plt.tight_layout()
# 调整布局使得图像不溢出
plt.savefig('train_loss.svg', format='svg', bbox_inches='tight')
# 显示图形
plt.show()
使用python重绘后的图像