Beispiel #1
0
 def _init_nasbench(self):
     # the arch -> performances dataset
     self.base_dir = os.path.join(utils.get_awnas_dir("AWNAS_DATA", "data"), "nasbench-101")
     if self.multi_fidelity:
         self.nasbench = api.NASBench(os.path.join(self.base_dir, "nasbench_full.tfrecord"))
     else:
         self.nasbench = api.NASBench(os.path.join(self.base_dir, "nasbench_only108.tfrecord"))
Beispiel #2
0
    def __init__(self, relative_dir=None):
        """
        Args:
            data_dir (str): The directory to store the datasets,
                by default: `data` directory under the current working directory.
        """
        super(BaseDataset, self).__init__(schedule_cfg=None)

        base_dir = utils.get_awnas_dir("AWNAS_DATA", "data")
        if relative_dir is None:
            relative_dir = self.NAME  #pylint: disable=no-member
        self.data_dir = os.path.join(base_dir, relative_dir)
Beispiel #3
0
def iso_to_deiso(iso_dict, iso_group):
    with open(os.path.join(utils.get_awnas_dir("AWNAS", "nasbench-201"), "non-isom.txt")) as fiso:
        lines = fiso.readlines()[:6466]
        lines = [line.strip() for line in lines]
    deiso_dict = {}
    for group_ in iso_group:
        acc_list = []
        name_ = group_[0]
        for ele_ in group_:
            acc_list.append(iso_dict[ele_])
            if ele_ in lines:
                name_ = ele_
        deiso_dict[name_] = np.mean(acc_list)
    return deiso_dict
Beispiel #4
0
def get_deiso_dict():
    ss = NasBench201SearchSpace(17, 4)
    query_dict = {}
    iso_group = []
    with open(os.path.join(utils.get_awnas_dir("AWNAS_DATA", "nasbench-201"), "deiso_dict.txt")) as iso_f:
        lines = iso_f.readlines()[1:]
        for line in lines:
            line_split = line.strip().split(" ")
            acc_list = []
            name_list = []
            for i in range(len(line_split) // 7):
                split_ = line_split[i*7:(i+1)*7]
                arch_mat = np.zeros([ss.num_vertices,ss.num_vertices]).astype(np.int32)
                ele = [float(i) for i in split_]
                arch_mat[np.tril_indices(ss.num_vertices, k=-1)] = ele[:int(ss.num_vertices * (ss.num_vertices - 1) / 2)]
                acc_list.append(ele[-1])
                name_list.append(ss.matrix2str(arch_mat))
            for name_ in name_list:
                query_dict[name_] = np.mean(acc_list)
            iso_group.append(name_list)
    return query_dict, iso_group
Beispiel #5
0
def get_iso_dict():
    with open(os.path.join(utils.get_awnas_dir("AWNAS_DATA", "nasbench-201"), "iso_dict.yaml")) as fnb:
        query_dict = yaml.load(fnb.read())
    return query_dict