Ejemplo n.º 1
0
# we need to set the random seed to be the same as that when you generate the perturbed graph
# data = Dataset(root='/tmp/', name=args.dataset, setting='nettack', seed=15)
# Or we can just use setting='prognn' to get the splits
# data = Dataset(root='./tmp/', name=args.dataset, setting='prognn')
# adj, features, labels_1 = data.adj, data.features, data.labels
# idx_train, idx_val, idx_test = data.idx_train, data.idx_val, data.idx_test

# load pre-attacked graph
# perturbed_data = PrePtbDataset(root='./tmp/',
#         name=args.dataset,
#         attack_method='meta',
#         ptb_rate=args.ptb_rate)

# use data splist provided by prognn
data = Dataset(root='./tmp/', name=args.dataset, setting='prognn')
data.adj = sp.csr_matrix(adj_per)
data.features = sp.csr_matrix(base_feat)
data.labels = labels
data.idx_train = idx_train
data.idx_val = idx_val
data.idx_test = idx_test

perturbed_adj = sp.csr_matrix(adj_per, dtype=float)
features = sp.csr_matrix(base_feat, dtype=float)

# Setup Defense Model
gat = GAT(nfeat=features.shape[1],
          nhid=8,
          heads=8,
          nclass=labels.max().item() + 1,
          dropout=0.5,
Ejemplo n.º 2
0
                                             features,
                                             labels,
                                             preprocess_adj=False,
                                             device=device)
labels = labels.cuda()
perturbed_adj = to_sparse(perturbed_adj.cuda())
features = features.cuda()
perturbed_adj = ut.normalize_adj_tensor(perturbed_adj, True)
features[features > 1] = 1
data = load_data(args.data,
                 normalize_feature=args.no_fea_norm,
                 missing_rate=args.missing_rate,
                 cuda=True)
data.x = features
data.y = labels
data.adj = perturbed_adj
data.train_mask, data.val_mask, data.test_mask = idx_train, idx_val, idx_test

nfeat = data.x.size(1)
nclass = int(data.y.max()) + 1
net = getattr(models, args.model)(nfeat,
                                  args.hid,
                                  nclass,
                                  dropout=args.dropout,
                                  nhead=args.nhead,
                                  nlayer=args.nlayer,
                                  norm_mode=args.norm_mode,
                                  norm_scale=args.norm_scale,
                                  residual=args.residual)
net = net.cuda()
optimizer = torch.optim.Adam(net.parameters(), args.lr, weight_decay=args.wd)