parent
21fa3eb068
commit
fb2b54f4fe
@ -0,0 +1,3 @@
|
||||
from plot import Plot
|
||||
|
||||
__all__ = ['Plot']
|
@ -0,0 +1,65 @@
|
||||
from IPython import display
|
||||
import os
|
||||
|
||||
|
||||
class PlotData(object):
|
||||
def __init__(self):
|
||||
self.step = []
|
||||
self.value = []
|
||||
|
||||
def append(self, step, value):
|
||||
self.step.append(step)
|
||||
self.value.append(value)
|
||||
|
||||
def reset(self):
|
||||
self.step = []
|
||||
self.value = []
|
||||
|
||||
|
||||
class Plot(object):
|
||||
def __init__(self, *args):
|
||||
self.args = args
|
||||
self.__plot_data__ = {}
|
||||
for title in args:
|
||||
self.__plot_data__[title] = PlotData()
|
||||
self.__disable_plot__ = os.environ.get("DISABLE_PLOT")
|
||||
if not self.__plot_is_disabled__():
|
||||
import matplotlib.pyplot as plt
|
||||
self.plt = plt
|
||||
|
||||
def __plot_is_disabled__(self):
|
||||
return self.__disable_plot__ == "True"
|
||||
|
||||
def append(self, title, step, value):
|
||||
assert isinstance(title, basestring)
|
||||
assert self.__plot_data__.has_key(title)
|
||||
data = self.__plot_data__[title]
|
||||
assert isinstance(data, PlotData)
|
||||
data.append(step, value)
|
||||
|
||||
def plot(self):
|
||||
if self.__plot_is_disabled__():
|
||||
return
|
||||
|
||||
titles = []
|
||||
for title in self.args:
|
||||
data = self.__plot_data__[title]
|
||||
assert isinstance(data, PlotData)
|
||||
if len(data.step) > 0:
|
||||
titles.append(title)
|
||||
self.plt.plot(data.step, data.value)
|
||||
self.plt.legend(titles, loc='upper left')
|
||||
display.clear_output(wait=True)
|
||||
display.display(self.plt.gcf())
|
||||
self.plt.gcf().clear()
|
||||
|
||||
def reset(self):
|
||||
self.__plot_data__ = []
|
||||
|
||||
if __name__ == '__main__':
|
||||
title = "cost"
|
||||
plot_test = Plot(title)
|
||||
plot_test.append(title, 1, 1)
|
||||
plot_test.append(title, 2, 2)
|
||||
for k, v in plot_test.__plot_data__.iteritems():
|
||||
print k, v.step, v.value
|
@ -1,48 +0,0 @@
|
||||
from IPython import display
|
||||
import os
|
||||
|
||||
|
||||
class PlotCost(object):
|
||||
"""
|
||||
append train and test cost in event_handle and then call plot.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.train_costs = ([], [])
|
||||
self.test_costs = ([], [])
|
||||
|
||||
self.__disable_plot__ = os.environ.get("DISABLE_PLOT")
|
||||
if not self.__plot_is_disabled__():
|
||||
import matplotlib.pyplot as plt
|
||||
self.plt = plt
|
||||
|
||||
def __plot_is_disabled__(self):
|
||||
return self.__disable_plot__ == "True"
|
||||
|
||||
def plot(self):
|
||||
if self.__plot_is_disabled__():
|
||||
return
|
||||
|
||||
self.plt.plot(*self.train_costs)
|
||||
self.plt.plot(*self.test_costs)
|
||||
title = []
|
||||
if len(self.train_costs[0]) > 0:
|
||||
title.append('Train Cost')
|
||||
if len(self.test_costs[0]) > 0:
|
||||
title.append('Test Cost')
|
||||
self.plt.legend(title, loc='upper left')
|
||||
display.clear_output(wait=True)
|
||||
display.display(self.plt.gcf())
|
||||
self.plt.gcf().clear()
|
||||
|
||||
def append_train_cost(self, step, cost):
|
||||
self.train_costs[0].append(step)
|
||||
self.train_costs[1].append(cost)
|
||||
|
||||
def append_test_cost(self, step, cost):
|
||||
self.test_costs[0].append(step)
|
||||
self.test_costs[1].append(cost)
|
||||
|
||||
def reset(self):
|
||||
self.train_costs = ([], [])
|
||||
self.test_costs = ([], [])
|
Loading…
Reference in new issue