コード例 #1
0
        torch.FloatTensor
            output (log probabilities) of SGC
        """

        self.eval()
        self.dropout = dropout

        if pyg_data == None:
            data = self.data
        else:
            data = pyg_data[0].to(self.device)

        self.data = data
        return self.forward(data)


if __name__ == "__main__":
    from deeprobust.graph.data import Dataset, Dpr2Pyg
    # from deeprobust.graph.defense import SGC
    data = Dataset(root='/tmp/', name='cora')
    adj, features, labels = data.adj, data.features, data.labels
    idx_train, idx_val, idx_test = data.idx_train, data.idx_val, data.idx_test
    sgc = SGC(nfeat=features.shape[1],
              nclass=labels.max().item() + 1,
              device='cpu')
    sgc = sgc.to('cpu')
    pyg_data = Dpr2Pyg(data)
    sgc.fit(pyg_data, verbose=True)  # train with earlystopping
    sgc.test()
    print(sgc.predict())
コード例 #2
0
data = Dataset(root='/tmp/', name=args.dataset, setting='nettack', seed=15)
adj, features, labels = data.adj, data.features, data.labels
idx_train, idx_val, idx_test = data.idx_train, data.idx_val, data.idx_test

gat = GAT(nfeat=features.shape[1],
      nhid=8, heads=8,
      nclass=labels.max().item() + 1,
      dropout=0.5, device=device)
gat = gat.to(device)


# test on clean graph
print('==================')
print('=== train on clean graph ===')

data1 = Dpr2Pyg(data)
gat.fit(data1, verbose=True) # train with earlystopping
gat.test()

print('==================')
print('=== train on clean graph + diffusion===')

pyg_data = Dpr2Pyg(data)
data2 = pyg_data[0]
gdc = T.GDC(self_loop_weight=1, normalization_in='sym',
            normalization_out='col',
            diffusion_kwargs=dict(method='ppr', alpha=0.05),
            sparsification_kwargs=dict(method='topk', k=128,
                                       dim=0), exact=True)
data2 = gdc(data2)