In [ ]:
%matplotlib inline
import ipywidgets
import sys
import time
from __future__ import print_function
from IPython.display import display

In [ ]:
def setupLabel(title):
    return ipywidgets.FloatText(value=0, description=title, disabled=True)
titles = ["Loss", "Accuracy", "Error"]
currentDisplay = [setupLabel(title) for title in titles]
averageDisplay = [setupLabel(title) for title in titles]
current_title_html = "<div style=""margin-left:90px"">Current</div>"
average_title_html = "<div style=""margin-left:90px"">Running Average</div>"
display(ipywidgets.HBox([
    ipywidgets.VBox([ipywidgets.HTML(current_title_html)] + currentDisplay),
    ipywidgets.VBox([ipywidgets.HTML(average_title_html)] + averageDisplay)
]))

In [ ]:
results = []
def recordScore(score):
    results.append(score)
    for display, value in zip(currentDisplay, score):
        display.value = value

    resultCount = min(len(results), 100)
    averages = [sum(x)/resultCount for x in zip(*results[-resultCount:])]
    for display, value in zip(averageDisplay, averages):
        display.value = value

In [ ]:
for i in range(100):
    f = float(i)
    recordScore((f, 2*f, 4*f))
    time.sleep(0.1)

In [ ]: