PuzzleTuning_VPT / PuzzleTuning /utils /check_tensorboard.py
Tianyinus's picture
init submit
edcf5ee verified
# 读取tf events画ACC-Loss
from tensorboard.backend.event_processing import event_accumulator # 导入tensorboard的事件解析器
import os
import matplotlib
import matplotlib.pyplot as plt
def find_all_files_startwith(root, suffix=None):
"""
返回特定前缀的所有文件路径列表
"""
res = []
for root, _, files in os.walk(root):
for f in files:
if suffix is not None and not f.startswith(suffix):
continue
res.append(os.path.join(root, f))
return res
def ACC_loss(PATH, out_file_path):
fig = plt.figure(figsize=(6, 4))
ax1 = fig.add_subplot(111)
runs_all = find_all_files_startwith(PATH, suffix='events')
print(runs_all)
for runs_path in runs_all:
model_idx = os.path.split(os.path.split(runs_path)[0])[1]
ea = event_accumulator.EventAccumulator(runs_path) # 初始化EventAccumulator对象
ea.Reload() # 这一步是必须的,将事件的内容都导进去
# print(ea.scalars.Keys()) # 检查保存了哪些记录scalars
train_ACC = ea.scalars.Items("train_ACC")
train_loss = ea.scalars.Items("train_loss") # 读取train_loss
'''
print([(i.step, i.value) for i in train_ACC])
for i, j in zip(train_ACC, train_loss):
print((i.value, j.value))
'''
ax1.plot([i.value for i in train_loss], [i.value for i in train_ACC], label=model_idx)
plt.legend(loc='lower right')
ax1.set_xlabel("Loss")
ax1.set_ylabel("Acc")
plt.show()
plt.savefig(out_file_path, dpi=1000)
if __name__ == '__main__':
matplotlib.use('Agg')
PATH = './MIL-SI/Archive/log/abalation'
out_file_path = './patch_size_abalation_loss-acc.jpg'
ACC_loss(PATH, out_file_path)