()
| 393 | |
| 394 | |
| 395 | def test_speit_injection_attack(): |
| 396 | graph, dataset, test_mask, device, device_ids = init_dataset() |
| 397 | model_sur = init_surrogate_model(graph, dataset, test_mask, device, device_ids) |
| 398 | model_target = init_target_model(graph, dataset, test_mask, device, device_ids) |
| 399 | print("SPEIT injection attack...") |
| 400 | inject_modes = ["random", "random-iter", "multi-layer"] |
| 401 | attacks = [SPEIT(lr=0.02, |
| 402 | n_epoch=5, |
| 403 | n_inject_max=10, |
| 404 | n_edge_max=20, |
| 405 | feat_lim_min=-1, |
| 406 | feat_lim_max=1, |
| 407 | inject_mode=inject_mode, |
| 408 | early_stop=True, |
| 409 | early_stop_patience=2, |
| 410 | early_stop_epsilon=1e-4, |
| 411 | device=device) |
| 412 | for inject_mode in inject_modes] |
| 413 | for attack in attacks: |
| 414 | graph_attack = attack.attack(model=model_sur, |
| 415 | graph=graph, |
| 416 | adj_norm_func=GCNAdjNorm) |
| 417 | print(graph_attack) |
| 418 | test_score_sur = evaluate(model_sur, |
| 419 | graph_attack, |
| 420 | mask=test_mask, |
| 421 | device=device) |
| 422 | print("Test score after attack for surrogate model: {:.4f}.".format(test_score_sur)) |
| 423 | test_score_target_attack = evaluate(model_target, |
| 424 | graph_attack, |
| 425 | mask=test_mask, |
| 426 | device=device) |
| 427 | print("Test score after attack for target model: {:.4f}.".format(test_score_target_attack)) |
| 428 | |
| 429 | |
| 430 | def test_tdgia_injection_attack(): |
no test coverage detected