2017-03-28 29 views

回答

0

請按照issue 376查看進度。這是一項積極的功能要求,在上個月取得了一些進展,但截至目前,還沒有辦法做到你想要的。然而。

0

正如@dga提到的,這還沒有實現。以下是一些使用EventAccumulator來組合標量tensorflow彙總值的代碼。這可以擴展以適應其他彙總類型。

import os 
from collections import defaultdict 

import numpy as np 
import tensorflow as tf 
from tensorboard.backend.event_processing.event_accumulator import EventAccumulator 


def tabulate_events(dpath): 

    summary_iterators = [EventAccumulator(os.path.join(dpath, dname)).Reload() for dname in os.listdir(dpath)] 

    tags = summary_iterators[0].Tags()['scalars'] 

    for it in summary_iterators: 
     assert it.Tags()['scalars'] == tags 

    out = defaultdict(list) 

    for tag in tags: 
     for events in zip(*[acc.Scalars(tag) for acc in summary_iterators]): 
      assert len(set(e.step for e in events)) == 1 

      out[tag].append([e.value for e in events]) 

    return out 


def write_combined_events(dpath, d_combined, dname='combined'): 

    fpath = os.path.join(dpath, dname) 
    writer = tf.summary.FileWriter(fpath) 

    tags, values = zip(*d_combined.items()) 

    timestep_mean = np.array(values).mean(axis=-1) 

    for tag, means in zip(tags, timestep_mean): 
     for i, mean in enumerate(means): 
      summary = tf.Summary(value=[tf.Summary.Value(tag=tag, simple_value=mean)]) 
      writer.add_summary(summary, global_step=i) 

     writer.flush() 

dpath = '/path/to/root/directory' 

d = tabulate_events(dpath) 

write_combined_events(dpath, d) 

這種解決方案假定如下所示的目錄結構:

dpath 
├── 1 
│   └── events.out.tfevents.1518552132.Alexs-MacBook-Pro-2.local 
├── 11 
│   └── events.out.tfevents.1518552180.Alexs-MacBook-Pro-2.local 
├── 21 
│   └── events.out.tfevents.1518552224.Alexs-MacBook-Pro-2.local 
├── 31 
│   └── events.out.tfevents.1518552264.Alexs-MacBook-Pro-2.local 
└── 41 
   └── events.out.tfevents.1518552304.Alexs-MacBook-Pro-2.local