Пример #1
0
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()
Пример #2
0
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)
Пример #3
0
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)