深度学习训练数据有时候是记录在log文件中,文件名类型为events.out.tfevents.xxx.king,当然这些文件可以通过tensorbord工具可视化,这里提供一些events.out.tfevents文件信息提取的方法。
(1)events.out.tfevents多个文件可视化
当有多个训练的events.out.tfevents文件,将这些文件的log文件夹放在同一个文件夹中,如下图
这里有两个可视化命令,如果一个不好使可以换下一个
第一个是下面指令,其中path是所有文件夹的上一级文件夹,如上图所示的就是LOGS_TEST文件夹路径,相对路径不好使就绝对路径,--port=6006要是报错,就换报错信息的--port信息。
tensorboard --logdir=path --port=6006
有时候在本地的vscode使用上面的指令报错就用下面的
python -m tensorboard.main --logdir=D:\TEST\logs_test --port=6006
然后ctrl并点击下面的网址进入tensorboard可视化页面
就能观察自己的训练数据
(2)events.out.tfevents文件信息提取
当需要提取events.out.tfevents文件某个特殊的数值,就需要如下代码
from tensorboard.backend.event_processing import event_accumulator
ea = event_accumulator.EventAccumulator('D:/TEST/logs_test/logs/events.out.tfevents.1702090974.king')
# print(type(ea)) # <class 'tensorboard.backend.event_processing.event_accumulator.EventAccumulator'>
ea.Reload() #(ea.scalars.Keys()): ['loss/train_loss', 'loss/train_loss_att', 'eval/MAE', 'eval/MSE']
# print(ea.scalars.Keys())
train_loss = ea.scalars.Items('loss/train_loss')
MAE = ea.scalars.Items('eval/MAE')
MSE = ea.scalars.Items('eval/MSE')
# print(len(train_loss), len(MAE), len(MSE)) # 500 500 500
print(type(train_loss), type(MAE), type(MSE)) # <class 'list'> <class 'list'> <class 'list'>
train_value = [] # 创建空列表存储数值
MAE_value = []
MSE_value = []
for i, j , k in zip(train_loss, MAE, MSE):
# print(i.step, i.value) # 读取每一步的数值
# print(j.step, j.value)
# print(k.step, k.value)
train_value.append(i.value)
MAE_value.append(j.value)
MSE_value.append(k.value)
train_min = min(train_value)
MAE_min = min(MAE_value)
MSE_min = min(MSE_value)
print(train_min, MAE_min, MSE_min) #
可以从events.out.tfevents文件中提取出其中的相关信息,注意一下文件中包含的items,然后根据item的信息提取就行了,如我的文件中就有四个items,可以只读取所有的信息,也可以找出训练过程中的最优数值