【问题标题】:Read out tensorboard hparams programatically以编程方式读出 tensorboard hparams
【发布时间】:2021-12-30 03:13:18
【问题描述】:

在使用 PyTorch 运行超参数搜索并在 Tensorboard 中可视化结果后,我想以编程方式从 Tensorboard 中读出超参数。

我的文件夹结构是

  • all_runs
    • 运行1
      • Lo​​ss_trainingloss
      • 1634168941.9091413(或其他时间戳) events.out.tfevents.1634168941
      • events.out.tfevents.1634135651
    • run2
    • 运行3

我可以轻松读取 tensorboard 时间序列,例如如下代码的损失曲线:

from tensorboard.backend.event_processing.event_accumulator import EventAccumulator

def read_eventfile(filepath, tag):
    event_accumulator = EventAccumulator(filepath)
        event_accumulator.Reload()

        events = event_accumulator.Scalars(tag)

        y = [x.value for x in events]

        return y

train_loss_curve = read_eventfile(path_to_event_folder, "Loss_trainingloss")

但是,我很难找到每次运行的 hparams 的访问权限,这些参数在 tensorboard 中正确显示。有人知道这是怎么做到的吗?

谢谢!

【问题讨论】:

    标签: python pytorch tensorboard hyperparameters


    【解决方案1】:

    我刚刚完成了一个名为tbparse 的工具,可以轻松读取hparams 事件,如下所示:

    from tbparse import SummaryReader
    log_dir = "<PATH_TO_EVENT_FILE_OR_DIRECTORY>"
    reader = SummaryReader(log_dir)
    hp = reader.hparams
    print(hp)
    

    更多用法见the documentation

    【讨论】:

      【解决方案2】:

      可惜没有一个不错的公共 api,但这似乎可行

      from tensorboard.backend.event_processing import event_accumulator
      from tensorboard.plugins.hparams.plugin_data_pb2 import HParamsPluginData
      
      path_str = "path/to/your/events.out.tfevents.xyz"
      ea = event_accumulator.EventAccumulator(path_str, 
                                              size_guidance={'tensors': 0} 
                                              )
      ea.Reload()
      
      data = ea._plugin_to_tag_to_content["hparams"]["_hparams_/session_start_info"]
      hparam_data = HParamsPluginData.FromString(data).session_start_info.hparams
      hparam_dict = {key: hparam_data[key].ListFields()[0][1] for key in hparam_data.keys()}
      

      【讨论】:

        猜你喜欢
        • 2017-04-25
        • 2020-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 2011-11-28
        相关资源
        最近更新 更多