def _plot_train_results()

in automl21/scs_neural/experimentation/launcher.py [0:0]


    def _plot_train_results(self, n_iter=10, tag='t', dir_tag=None, baseline=False):
        if not hasattr(self, 'longitudinal_samples'):
            self.longitudinal_samples = np.random.randint(
                0, len(self.scs_problem.instances),
                size=self.cfg.num_test_instances
            )        
        multi_instance = self.scs_neural.select_instances(self.multi_instance,
                                                          self.longitudinal_samples)
        sampled_instances = [self.scs_problem.instances[curr_id] for curr_id in self.longitudinal_samples]
        batch_size = self.cfg.train_batch_size

        if multi_instance.num_instances == batch_size:
            soln_neural, scs_neural_metrics = self.scs_neural.solve(
                multi_instance, max_iters=n_iter, track_metrics=True, train=False)
        else:
            all_soln_neural, all_neural_metrics = [], []
            for i in range(0, multi_instance.num_instances, batch_size):
                max_instance_id = min((i + batch_size), multi_instance.num_instances)
                curr_test = self.scs_neural.select_instances(
                    multi_instance, 
                    [x for x in range(i, max_instance_id)])
                soln_neural, scs_neural_metrics = self.scs_neural.solve(
                    curr_test, max_iters=n_iter, track_metrics=True, train=False)
                all_soln_neural = all_soln_neural + soln_neural
                all_neural_metrics = all_neural_metrics + scs_neural_metrics
            soln_neural, scs_neural_metrics = all_soln_neural, all_neural_metrics

        losses = [soln_neural[i]['loss'] for i in range(len(soln_neural))]
        loss, index_nans = self._compute_loss(losses)
        if loss == -1:
            return []

        if dir_tag is None:
            dir_tag = ""
        upd_dir_tag = "train/" + dir_tag

        x = [i for i in range(len(self.longitudinal_samples))]
        if len(index_nans) > 0:
            x = [i for i in x if i not in index_nans]

        sampled_ids = np.random.choice(
            x, size=self.cfg.train_graph_batch_size, replace=False
        )

        agg_scs_neural, conf_scs_neural = self._extract_aggregate_metrics(
            scs_neural_metrics, soln_type='neural', index_nans=index_nans)
    
        self._plot_solution_results(sampled_ids, scs_neural_metrics, tag=tag, dir_tag=upd_dir_tag, title_stub='Train')
        return agg_scs_neural, conf_scs_neural