def _convert_to_sequential_list()

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