36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import tensorflow as tf
|
|
import pandas as pd
|
|
from glob import glob, fnmatch
|
|
from argparse import ArgumentParser
|
|
|
|
parser = ArgumentParser(description="Extract metrics from TF logs.")
|
|
parser.add_argument('--log', '-d', dest="pattern", default="./eval/event*", help="Glob pattern for TF event logs.")
|
|
parser.add_argument('--output', '-o', dest="output", default="./metrics.csv", help="Name of output csv file.")
|
|
parser.add_argument('metric', default=['*'], nargs='*', type=str, help="Metrics to extract");
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
def extract_metrics(path):
|
|
runlog = pd.DataFrame(columns=['metric', 'value'])
|
|
|
|
for e in tf.train.summary_iterator(path):
|
|
for v in e.summary.value:
|
|
if any([fnmatch.fnmatch(v.tag, pattern) for pattern in args.metric]):
|
|
runlog = runlog.append({
|
|
'metric': v.tag,
|
|
'value':v.simple_value
|
|
}, ignore_index=True)
|
|
|
|
return runlog
|
|
|
|
metrics = pd.DataFrame()
|
|
for path in glob(args.pattern):
|
|
try:
|
|
metrics = metrics.append(extract_metrics(path))
|
|
except:
|
|
print(f'Event file corrupted: {path}, skipping...')
|
|
|
|
print(metrics)
|
|
|
|
metrics.to_csv(args.output) |