Tensorboard不加载所有数据点的解决方案

使用下面代码读取tensorboard保存文件中的数据,部分数据点未加载出来

# 导入tensorboard的事件解析器
from tensorboard.backend.event_processing import event_accumulator

# 初始化EventAccumulator对象
ea = event_accumulator.EventAccumulator("log/events.out.tfevents.1648366215.idse-System-Product-Name")
# 这一步是必须的,将事件的内容都导进去
ea.Reload()
# 输出log文件中所有数据的key
print(ea.scalars.Keys())
# 读取指定key值的数据
train_loss = ea.scalars.Items("所需获取某个数据的key")

debug截图:
Tensorboard不加载所有数据点的解决方案_第1张图片

分析原因:
Tensorboard为防止内存溢出,默认只输出随机10000个step的训练数据( 数据点超过10000,Tensorboard默认执行降采样)

解决方案:
在初始化EventAccumulator对象的时候,使参数size_guidance=event_accumulator.STORE_EVERYTHING_SIZE_GUIDANCE,就可以解决不加载所有数据点的问题。
因为size_guidance参数如果没有设置,size_guidance会默认为DEFAULT_SIZE_GUIDANCE,此种模式下,为了避免OOMing (running out of memory) 问题,会对数据做降采样,保持数量在10000以内。

# 导入tensorboard的事件解析器
from tensorboard.backend.event_processing import event_accumulator

# 初始化EventAccumulator对象
ea = event_accumulator.EventAccumulator("log/events.out.tfevents.1648366215.idse-System-Product-Name", size_guidance=event_accumulator.STORE_EVERYTHING_SIZE_GUIDANCE)
# 这一步是必须的,将事件的内容都导进去
ea.Reload()
# 输出log文件中所有数据的key
print(ea.scalars.Keys())
# 读取指定key值的数据
train_loss = ea.scalars.Items("所需获取某个数据的key")

Tensorboard不加载所有数据点的解决方案_第2张图片

完工。

你可能感兴趣的:(python,机器学习,tensorflow)