def visualize(self, out_filename="out/training_bs.html", out_filename_pickle="out/training_bs.pickle"): # Do bootstrap for the confusion table. n_bs = 1 widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ', progressbar.ETA(), ' ', progressbar.AdaptiveETA()] bs_progress = progressbar.ProgressBar(widgets=widgets).start() cts = [] for bs_iter in bs_progress(range(n_bs)): n_dialogs = len(self.training_dialogs) dataset = self.training_dialogs tracker = Tracker(self.model, inv=False) tracker.simulate(dataset) cts.append(tracker.out_data['confusion_tables']) ct = bootstrap.from_all_confusion_tables(cts) context = {} context['tracker'] = tracker.out_data context['bootstrap_ct'] = ct context['mean_score'] = np.mean([ctt.mean_score for ctt in ct.values()]) context['model'] = self.model context['training_metrics'] = self.training_metrics context['training_data'] = self.training_dialogs env = Environment(loader=FileSystemLoader('tpl')) env.globals.update(zip=zip) tpl = env.get_template('training.html') with open(out_filename, "w") as f_out: f_out.write(tpl.render(**context)) with open(out_filename_pickle, "w") as f_out: info = { 'mean_score': float(context['mean_score']), 'losses': [float(x) for x in context['training_metrics']['losses']], #'simulation': context['tracker']['simulation'] } f_out.write(json.dumps(info))