使用TensorBoard导出曲线数据,利用Python重新绘制

目录

前言

数据保存为csv文件

python绘制曲线图


前言

tensorboard通常被用来实时记录训练过程中的损失曲线,有的时候我们需要导出这些曲线图,这里我介绍一种从tensorboard导出数据,并使用python重新绘制曲线的方法。

数据保存为csv文件

首先点击左上角的SCALARS

image-20231222222442549

然后勾选上Show data down links这一选项

image-20231222222536392

会发现图像右下角多了一部分,点击右下角画框部分

image-20231222222641300

点击出现的这个点

image-20231222222726779

点击csv

image-20231222222818464

这时候便会下载下来数据

image-20231222222848299

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重绘后的图像

image-20231222223101443

作者:一只通信仔

物联沃分享整理
物联沃-IOTWORD物联网 » 使用TensorBoard导出曲线数据,利用Python重新绘制

发表回复