in automl21/scs_neural/experimentation/launcher.py [0:0]
def _extract_aggregate_metrics(self, soln_metrics, soln_type='original', index_nans=[]):
all_data, all_metrics = [], []
result_dict, conf_dict = {}, {}
all_data_orig, all_metrics_orig = [], []
max_data_len = 0
for i in range(len(soln_metrics)):
if i in index_nans:
continue
if soln_type == 'neural':
u_diff_instance = soln_metrics[i][-1]
u_diff_instance = [x.cpu() for x in u_diff_instance]
else:
raise RuntimeError("Unknown solution type")
orig_iterate_diff = u_diff_instance[0]
if hasattr(self.cfg.model, 'learn_init_iterate') and self.cfg.model.learn_init_iterate and soln_type == 'neural':
slice_start = 1
else:
slice_start = 0
data = [x / orig_iterate_diff for x in u_diff_instance[slice_start:]]
all_data.append(data)
all_data_orig.append(u_diff_instance)
max_data_len = max(len(data), max_data_len)
for i in range(len(all_data)):
curr_metrics = np.array(all_data[i])
diff = max_data_len - len(curr_metrics)
if max_data_len > 0:
upd_curr_metrics = np.pad(curr_metrics, (0, diff), 'constant',
constant_values=(curr_metrics[-1]))
else:
upd_curr_metrics = curr_metrics
all_metrics.append(upd_curr_metrics)
for i in range(len(all_data_orig)):
curr_metrics = np.array(all_data_orig[i])
diff = max_data_len + 1 - len(curr_metrics)
if max_data_len > 0:
upd_curr_metrics = np.pad(curr_metrics, (0, diff), 'constant',
constant_values=(curr_metrics[-1]))
else:
upd_curr_metrics = curr_metrics
all_metrics_orig.append(upd_curr_metrics)
final_metrics = np.stack(all_metrics)
result_dict['u_diff'] = final_metrics.mean(axis=0)
std_dev = final_metrics.std(axis=0)
conf_dict['u_diff'] = std_dev
final_metrics_orig = np.stack(all_metrics_orig)
result_dict['u_diff_orig'] = final_metrics_orig.mean(axis=0)
std_dev = final_metrics_orig.std(axis=0)
conf_dict['u_diff_orig'] = std_dev
# add data from log file:
loss_data = pd.read_csv('log.csv', delimiter=',', header=0)
train_loss = loss_data['train_loss'].to_numpy()
val_loss = loss_data['val_loss'].to_numpy()
test_loss = loss_data['test_loss'].to_numpy()
result_dict["loss"] = {}
result_dict["loss"]["train"] = train_loss
result_dict["loss"]["val"] = val_loss
result_dict["loss"]["test"] = test_loss
return result_dict, conf_dict