def _itr_load_testing_samples(self, itr): fname = os.path.join(self._itr_dir(itr), 'testing_samples_itr_{0}.npz'.format(itr)) if os.path.exists(fname): return Sample.load(fname) elif not os.path.exists(self._itr_dir(itr)): raise Exception() else: return None
def _load_samples(self): samples_itrs = [] itr = 0 while True: try: samples_itrs.append(self._itr_load_samples(itr)) itr += 1 except: break self._logger.info('Loaded {0} iterations of samples'.format( len(samples_itrs))) ### load initial dataset init_data_folder = params['probcoll'].get('init_data', None) if init_data_folder is not None: if itr == 0: samples_itrs.append([]) num_init_samples = 0 fnames = [ os.path.join(init_data_folder, fname) for fname in os.listdir(init_data_folder) ] for fname in fnames: try: samples = Sample.load(fname) except: continue self._logger.debug('Loaded samples from {0}'.format(fname)) samples_itrs[0] += samples num_init_samples += len(samples) self._logger.info('Loaded initial dataset of {0} samples'.format( num_init_samples)) return samples_itrs
def plot_final_policy_combined(exp_groups, des_mps, des_speed, min_speed, ax=None, fs=20., save_path=None): dt = 0.5 if ax is None: f, ax = plt.subplots(1, 1, figsize=(5, 3.5)) else: f = ax.get_figure() exp_groups.insert(0, [{ 'folder': os.path.join(EXP_FOLDER, 'random'), 'label': 'Random policy', 'color': cm.Greys(1.0) }]) for exp_group_num, exp_group in enumerate(exp_groups): distance_travelled = [] for exp in exp_group: samples_folder = os.path.join(exp['folder'], 'prediction/final_policy/') samples_fnames = [ os.path.join(samples_folder, fname) for fname in os.listdir(samples_folder) if fname[-4:] == '.npz' ] assert (len(samples_fnames) == 1) samples_fname = samples_fnames[0] samples = Sample.load(samples_fname) for sample in samples: distance = dt * (des_mps / des_speed) * (sample.get_U()[:, 1] - min_speed).sum() distance_travelled.append(distance) width = 0.8 / len(exp_groups) ax.bar([exp_group_num * width], [np.mean(distance_travelled)], yerr=[np.std(distance_travelled)], width=width * 0.8, error_kw=dict(lw=4, capsize=5, capthick=2), color=exp_group[0]['color'], ecolor=cm.Greys(0.5), label=exp_group[0]['label']) # for exp_group in exp_groups: # ax.plot([], [], lw=5., label=exp_group[0]['label'], color=exp_group[0]['color']) lgd = ax.legend(loc='upper center', fontsize=fs * 0.8, bbox_to_anchor=(1.35, 0.7)) ax.set_xlim((-0.05, width * len(exp_groups))) ax.set_ylim((-0.3, ax.get_ylim()[1])) ax.set_ylabel(r'Distance travelled (m)', fontsize=fs) for tick in ax.xaxis.get_major_ticks() + ax.xaxis.get_minor_ticks(): tick.label1.set_visible(False) for tick in ax.yaxis.get_major_ticks(): tick.label.set_fontsize(fs) if save_path is not None: f.savefig(save_path, bbox_extra_artists=(lgd, ), bbox_inches='tight')
def plot_final_policy(exp_groups, des_mps, des_speed, min_speed, ax=None, fs=20., save_path=None): dt = 0.5 if ax is None: f, ax = plt.subplots(1, 1, figsize=(10, 3.5)) else: f = ax.get_figure() exp_groups.insert(0, [{ 'folder': os.path.join(EXP_FOLDER, 'random'), 'label': 'Random policy', 'color': cm.Greys(0.5) }]) for exp_num, exp in enumerate(flatten_list(exp_groups)): samples_folder = os.path.join(exp['folder'], 'prediction/final_policy/') samples_fnames = [ os.path.join(samples_folder, fname) for fname in os.listdir(samples_folder) if fname[-4:] == '.npz' ] assert (len(samples_fnames) == 1) samples_fname = samples_fnames[0] samples = Sample.load(samples_fname) distance_travelled = [] for sample in samples: distance = dt * (des_mps / des_speed) * (sample.get_U()[:, 1] - min_speed).sum() distance_travelled.append(distance) # ax.plot(range(len(distance_travelled)), distance_travelled, # linestyle='', # marker=exp['marker'], # color=exp['color'], # mew=exp['mew']) ax.bar(np.arange(len(distance_travelled)) + 0.15 * exp_num + 0.1, distance_travelled, width=0.15, color=exp['color']) for exp_group in exp_groups: ax.plot([], [], lw=5., label=exp_group[0]['label'], color=exp_group[0]['color']) lgd = ax.legend(loc='upper right', fontsize=fs * 0.8) ax.set_xlabel(r'Starting position', fontsize=fs) ax.set_ylabel(r'Distance travelled (m)', fontsize=fs) N = len(distance_travelled) ax.set_xticks(np.arange(N) + 0.5) ax.set_xticklabels([str(x) for x in range(N)]) # Hide major tick labels and customize minor tick labels ax.xaxis.set_minor_formatter(ticker.NullFormatter()) ax.xaxis.set_major_locator(ticker.FixedLocator(np.arange(N) + 0.5)) ax.xaxis.set_major_formatter( ticker.FixedFormatter([r'{0}'.format(str(x)) for x in range(N)])) for tick in ax.xaxis.get_major_ticks() + ax.yaxis.get_major_ticks(): tick.label.set_fontsize(fs) if save_path is not None: f.savefig(save_path, bbox_extra_artists=(lgd, ), bbox_inches='tight')
def _itr_load_samples(self, itr): fname = os.path.join(self._itr_dir(itr), 'samples_itr_{0}.npz'.format(itr)) return Sample.load(fname)