in automl21/scs_neural/solver/neural_scs_batched.py [0:0]
def _convert_to_sequential_list(self, solns, metrics, num_instances):
"""Convert the solutions and result metrics to the format consistent
with sequential SCS"""
new_solns, new_metrics = [], []
for i in range(num_instances):
new_solns.append({})
soln_keys = {}
for key, value in solns.items():
if value.dim() == 0:
value = value.unsqueeze(0)
soln_keys[key] = [value[i] for i in range(value.size(0))]
for i in range(num_instances):
new_solns[i][key] = soln_keys[key][i]
if len(metrics.keys()) == 0:
return new_solns, new_metrics
for j in range(num_instances):
new_metrics.append([])
for i, key in enumerate(["residuals", "objectives"]):
new_metrics[j].append([])
num_iterations = len(metrics[key])
for k in range(num_iterations):
new_pair = [metrics[key][k][0][j], metrics[key][k][1][j]]
new_metrics[j][i].append(new_pair)
key = "all_tau"
if key in metrics:
num_iterations = len(metrics[key])
for j in range(num_instances):
new_metrics[j].append([])
for k in range(num_iterations):
new_metrics[j][-1].append(metrics["all_tau"][k][j])
key = "diffs_u"
num_iterations = len(metrics[key])
for j in range(num_instances):
new_metrics[j].append([])
for k in range(num_iterations):
new_metrics[j][-1].append(metrics["diffs_u"][k][j])
return new_solns, new_metrics