def get_result(auto_var): file_name = get_file_name(auto_var, name_only=True).replace("_", "-") file_path = f"./results/{file_name}.json" if not os.path.exists(file_path): return None try: with open(file_path, "r") as f: ret = json.load(f) except Exception as e: print("problem with %s" % file_path) raise e return ret
def delete_file(auto_var): os.unlink(get_file_name(auto_var) + '.json')
def temp_fix(auto_var): file_name = get_file_name(auto_var) print(file_name) if os.path.exists("%s.json" % file_name): with open("%s.json" % file_name, "r") as f: ret = json.load(f) if "tst_score" in ret: return else: return random_state = set_random_seed(auto_var) ord = auto_var.get_var("ord") X, y, eps_list = auto_var.get_var("dataset") idxs = np.arange(len(X)) random_state.shuffle(idxs) trnX, tstX, trny, tsty = X[idxs[:-200]], X[idxs[-200:]], y[idxs[:-200]], y[ idxs[-200:]] scaler = MinMaxScaler() trnX = scaler.fit_transform(trnX) tstX = scaler.transform(tstX) lbl_enc = OneHotEncoder(categories=[np.sort(np.unique(y))], sparse=False) #lbl_enc = OneHotEncoder(sparse=False) lbl_enc.fit(trny.reshape(-1, 1)) auto_var.set_intermidiate_variable("lbl_enc", lbl_enc) results = [] auto_var.set_intermidiate_variable("trnX", trnX) auto_var.set_intermidiate_variable("trny", trny) model_name = auto_var.get_variable_value("model") attack_name = auto_var.get_variable_value("attack") if 'adv_rf' in model_name: pre_model = auto_var.get_var_with_argument('model', model_name[4:]) pre_model.fit(trnX, trny) if 'blackbox' in attack_name: auto_var.set_intermidiate_variable("model", pre_model) elif 'adv_nn' in model_name and 'blackbox' in attack_name: pre_model = auto_var.get_var_with_argument('model', model_name[4:]) pre_model.fit(trnX, trny) auto_var.set_intermidiate_variable("model", pre_model) model = auto_var.get_var("model") auto_var.set_intermidiate_variable("model", model) model.fit(trnX, trny) pred = model.predict(tstX) ori_tstX, ori_tsty = tstX, tsty # len = 200 idxs = np.where(pred == tsty)[0] random_state.shuffle(idxs) augX = None if ('adv' in model_name) or ('advPruning' in model_name) or ('robustv2' in model_name): assert hasattr(model, 'augX') auto_var.set_intermidiate_variable("trnX", model.augX) auto_var.set_intermidiate_variable("trny", model.augy) augX, augy = model.augX, model.augy ret['tst_score'] = (model.predict(ori_tstX) == ori_tsty).mean() with open("%s.json" % file_name, "w") as f: json.dump(ret, f)