class Visualizer(): def __init__(self, file_name): self.file_name = file_name self.Log = Logger() self.isLoaded = False #is_empty = self.Log.Load(self.file_name) #if is_empty: # print "Log file is empty" #else: # print "Log file loaded" def Load(self, file_name=None): if file_name is not None: self.file_name = file_name is_empty = self.Log.Load(self.file_name) if is_empty: print "Log file is empty" else: print "Log file loaded" self.isLoaded = True def List(self): if not self.isLoaded: self.Load() logs = self.Log.ListLogs() print logs def ShowLog(self, *log_names): self.Load() plt.figure() logs = list(log_names) name = "" #if type(log_names) is list: # name = "" for log in logs: name = name + log + " & " l = self.Log.GetLogByName(log) x_axis = np.arange(l.size) plt.plot(x_axis, l) plt.title(name[:-2]) plt.xlabel('episodes') plt.show() def GetLog(self, log_name): self.Load() log = self.Log.GetLogByName(log_name) t = np.arange(log.size) return t, log def ShowSlicedLog(self, log_name, max_index): self.Load() max_index = max_index - 1 log = self.Log.GetLogByName(log_name) t = np.arange(log.size) if max_index > log.size - 1: max_index = log.size - 1 plt.plot(t[0:max_index], log[0:max_index]) plt.title(log_name) plt.show() def ShowMulLog(self, *log_names): self.Load() plt.figure() logs = list(log_names) num_logs = len(logs) if num_logs < 3: cols = num_logs rows = 1 else: cols = 3 if num_logs % 3 == 0: rows = num_logs / 3 else: rows = num_logs / 3 + 1 c = 1 for i in xrange(1, rows + 1): for j in xrange(1, cols + 1): if c > num_logs: break plot_num = str(rows) + str(cols) + str(c) plt.subplot(int(plot_num)) l = self.Log.GetLogByName(logs[c - 1]) x_axis = np.arange(l.size) plt.plot(x_axis, l) plt.title(logs[c - 1]) plt.xlabel('episodes') c = c + 1 plt.show() def ShowMulLogSliced(self, max_i, *log_names): self.Load() plt.figure() logs = list(log_names) num_logs = len(logs) if num_logs < 3: cols = num_logs rows = 1 else: cols = 3 if num_logs % 3 == 0: rows = num_logs / 3 else: rows = num_logs / 3 + 1 c = 1 for i in xrange(1, rows + 1): for j in xrange(1, cols + 1): if c > num_logs: break plot_num = str(rows) + str(cols) + str(c) plt.subplot(int(plot_num)) l = self.Log.GetLogByName(logs[c - 1]) end_i = min(l.size, max_i) x_axis = np.arange(end_i) plt.plot(x_axis, l[0:end_i]) plt.title(logs[c - 1]) plt.xlabel('episodes') c = c + 1 plt.show()
import matplotlib.pyplot as plt import numpy as np LEN = 100 # libraries BASE = '/home/ayal/Documents/gym/Code/DQN_hockey/hockey_numeric_3points/' DROP_DIR = 'hockey_CF1_drop/logs' DROPDQN_DIR = 'hockey_CF1_pureDQN2/logs' #WORB_DIR = 'hockey_CF1_pureDQN/logs' WORB_DIR = 'hockey_CF1_noupdateRB/logs' WRB_DIR = 'hockey_CF1_updateRB/logs' # loggers L_DROP = Logger() L_DROP.Load(BASE+DROP_DIR) L_DROPDQN = Logger() L_DROPDQN.Load(BASE+DROPDQN_DIR) L_WORB = Logger() L_WORB.Load(BASE+WORB_DIR) L_WRB = Logger() L_WRB.Load(BASE+WRB_DIR) j = 1 plt.figure(1) logs = ['network_left', 'network_middle', 'network_right', 'network_random', 'estimated_value','error'] for logname in logs: DROP_m = L_DROP.GetLogByName(logname)
LEN = 100 # libraries BASE = '/home/ayal/Documents/gym/Code/' DDPG2_DIR = 'DDPG2/results/logs' DDPG1_DIR = 'DDPG2/results2/logs' DQN_DIR = 'DQN_hockey/hockey_DDQN_deepmind/hockey_DQN_5000_V5/logs' GDQN1_DIR = 'DQN_hockey/hockey_numeric_3points/hockey_multinet1_decay_rate1.2_2_V5/logs' GDQN2_DIR = 'DQN_hockey/hockey_numeric_3points/hockey_multinet1_decay_rate1.2_2_V6/logs' GDQN3_DIR = 'DQN_hockey/hockey_numeric_3points/hockey_multinet1_decay_rate1.2_2_V7/logs' GDQN4_DIR = 'DQN_hockey/hockey_numeric_3points/hockey_multinet1_decay_rate1.2_2_V2/logs' # loggers L_DDPG1 = Logger() L_DDPG1.Load(BASE+DDPG1_DIR) L_DDPG2 = Logger() L_DDPG2.Load(BASE+DDPG2_DIR) L_DQN = Logger() L_DQN.Load(BASE+DQN_DIR) L_GDQN1 = Logger() is_empty = L_GDQN1.Load(BASE+GDQN1_DIR) L_GDQN2 = Logger() is_empty = L_GDQN2.Load(BASE+GDQN2_DIR) L_GDQN3 = Logger() is_empty = L_GDQN3.Load(BASE+GDQN3_DIR) L_GDQN4 = Logger() is_empty = L_GDQN4.Load(BASE+GDQN4_DIR) j = 1 plt.figure(1)