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"))
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)
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
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
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