DerivedFunction's picture
Training in progress, step 2500
94ff194 verified
import time
import curses
from tensorboard.backend.event_processing.event_accumulator import EventAccumulator
def load_scalars(acc):
acc.Reload()
tags = acc.Tags().get("scalars", [])
data = {}
for tag in tags:
events = acc.Scalars(tag)
if events:
last = events[-1]
data[tag] = (last.step, last.value)
return data
def draw(stdscr, logdir, refresh):
curses.curs_set(0)
stdscr.nodelay(True)
acc = EventAccumulator(logdir, size_guidance={"scalars": 0})
acc.Reload()
while True:
stdscr.erase()
stdscr.addstr(0, 0, f"TensorBoard Live Viewer — {logdir}")
stdscr.addstr(1, 0, "Press q to quit")
data = load_scalars(acc)
row = 3
stdscr.addstr(row, 0, f"{'TAG':40} {'STEP':>10} {'VALUE':>12}")
stdscr.addstr(row+1, 0, "-" * 65)
row += 2
for tag, (step, value) in sorted(data.items()):
stdscr.addstr(row, 0, f"{tag:40} {step:10d} {value:12.6f}")
row += 1
stdscr.refresh()
time.sleep(refresh)
try:
if stdscr.getkey() == "q":
break
except:
pass
def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("logdir", type=str)
parser.add_argument("--refresh", type=float, default=1.0)
args = parser.parse_args()
curses.wrapper(draw, args.logdir, args.refresh)
if __name__ == "__main__":
main()