new_pop_list = [] for parent in pop: child = self.crossover(parent, pop) child = self.mutate(child) new_pop_list.append(child) self.population = new_pop_list if __name__ == '__main__': random.seed(cmd_args.seed) np.random.seed(cmd_args.seed) torch.manual_seed(cmd_args.seed) label_map, _, g_list = load_graphs() base_classifier = load_base_model(label_map, g_list) if cmd_args.idx_start + cmd_args.num_instances > len(g_list): instances = g_list[cmd_args.idx_start:] else: instances = g_list[cmd_args.idx_start:cmd_args.idx_start + cmd_args.num_instances] attacked = 0.0 pbar = tqdm(instances) idx = cmd_args.idx_start for g in pbar: agent = GeneticAgent(base_classifier, g, cmd_args.num_mod) if len(agent.population) == 0: continue for i in range(cmd_args.rounds):
if len(added) >= num_added: break if len(added) == 0: continue g2 = g.copy() g2.add_edges_from(added) cand_list.append(S2VGraph(g2, s2v_g.label)) _, _, acc = model(cand_list) acc = acc.double().cpu().numpy() for i in range(len(cand_list)): if acc[i] < 1.0: return cand_list[i] return cand_list[0] if __name__ == '__main__': random.seed(cmd_args.seed) np.random.seed(cmd_args.seed) torch.manual_seed(cmd_args.seed) label_map, train_glist, test_glist = load_er_data() base_classifier = load_base_model(label_map, test_glist) new_test_list = [] for g in tqdm(test_glist): new_test_list.append(propose_attack(base_classifier, g)) test_graphs(base_classifier, new_test_list)