def METHOD_NAME(self):
    def _isCNNStructure(k_best):
        return k_best >= 4
    def _parse(weights):
        gene = []
        n = 2
        start = 0
        cnn_structure_count = 0
        for i in range(self._steps):
            end = start + n
            W = weights[start:end].copy()
            edges = sorted(
                range(i + 2),
                key=lambda x: -max(
                    W[x][k]
                    for k in range(len(W[x]))
                    if k != PRIMITIVES.index("none")
                ),
            )[:2]
            for j in edges:
                k_best = None
                for k in range(len(W[j])):
                    if k != PRIMITIVES.index("none"):
                        if k_best is None or W[j][k] > W[j][k_best]:
                            k_best = k
                if _isCNNStructure(k_best):
                    cnn_structure_count += 1
                gene.append((PRIMITIVES[k_best], j))
            start = end
            n += 1
        return gene, cnn_structure_count
    with torch.no_grad():
        gene_normal, cnn_structure_count_normal = _parse(
            F.softmax(self.alphas_normal, dim=-1).data.cpu().numpy()
        )
        gene_reduce, cnn_structure_count_reduce = _parse(
            F.softmax(self.alphas_reduce, dim=-1).data.cpu().numpy()
        )
        concat = range(2 + self._steps - self._multiplier, self._steps + 2)
        METHOD_NAME = Genotype(
            normal=gene_normal,
            normal_concat=concat,
            reduce=gene_reduce,
            reduce_concat=concat,
        )
    return METHOD_NAME, cnn_structure_count_normal, cnn_structure_count_reduce