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