如何将Python中model.fit返回的TrainingLogger类输出导出为JSON文件
导出TrainingLogger数据的解决方案
你获取到的torchtuples.callbacks.TrainingLogger类实例本身内置了结构化的训练/验证指标存储,无需自行解析打印的文本内容,按以下步骤操作即可导出:
1. 转换为Pandas DataFrame
官方内置了直接转DataFrame的方法:
# 直接调用to_pandas方法得到结构化数据 log_df = log.to_pandas() # 若使用旧版本torchtuples,可直接读取df属性 # log_df = log.df
转换后得到的DataFrame默认包含epoch序号、训练损失、验证损失等所有打印的指标数据。
2. 导出为目标文件格式
拿到DataFrame后可直接调用pandas内置的导出方法,以下是常用格式的导出示例:
- 导出为CSV文件(兼容性最高)
log_df.to_csv("训练日志.csv", index_label="epoch", encoding="utf-8-sig")
- 导出为Excel文件
log_df.to_excel("训练日志.xlsx", index_label="epoch")
- 导出为JSON格式
log_df.to_json("训练日志.json", orient="records", force_ascii=False)
版本兼容备选方案
如果上述方法无法获取DataFrame,可手动提取指标拼接:
import pandas as pd # 手动提取各指标序列 train_loss = log.train_scores["loss"] val_loss = log.val_scores["loss"] # 拼接为DataFrame log_df = pd.DataFrame({ "train_loss": train_loss, "val_loss": val_loss })
注:你打印内容中出现的
df_val['event'] = 1 -df_val['event']是你提前修改验证集标签的代码,不属于训练日志的内置数据,如需保留可自行在导出前添加到DataFrame中。
内容的提问来源于stack exchange,提问作者V J
相关产品推荐
相关产品推荐

