def METHOD_NAME(self):
    def _parse(weights):
        gene = []
        for i in range(self._steps):
            edges = []
            for j in range(2 + i):
                node_str = "{:}<-{:}".format(i, j)
                ws = weights[self.edge2index[node_str]]
                for k, op_name in enumerate(self.op_names):
                    if op_name == "none":
                        continue
                    edges.append((op_name, j, ws[k]))
            edges = sorted(edges, key=lambda x: -x[-1])
            selected_edges = edges[:2]
            gene.append(tuple(selected_edges))
        return gene
    with torch.no_grad():
        gene_normal = _parse(
            torch.softmax(self.arch_normal_parameters, dim=-1).cpu().numpy()
        )
        gene_reduce = _parse(
            torch.softmax(self.arch_reduce_parameters, dim=-1).cpu().numpy()
        )
    return {
        "normal": gene_normal,
        "normal_concat": list(
            range(2 + self._steps - self._multiplier, self._steps + 2)
        ),
        "reduce": gene_reduce,
        "reduce_concat": list(
            range(2 + self._steps - self._multiplier, self._steps + 2)
        ),
    }