9b645ad8d8 | ||
---|---|---|
docs | ||
eixgnn | ||
test | ||
.coveragerc | ||
.gitignore | ||
AUTHORS.md | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENCE | ||
Makefile | ||
README.md | ||
__init__.py | ||
setup.cfg | ||
setup.py |
README.md
EiX-GNN
Official implementation of EiXGNN algorithm. For further informations, see EiX-GNN: Concept-level eigencentrality explainer for graph neural networks, paper.
Run an example
from torch_geometric.datasets import TUDataset
dataset = TUDataset(root="/tmp/ENZYMES", name="ENZYMES")
data = dataset[0]
import torch.nn.functional as F
from torch_geometric.nn import GCNConv, global_mean_pool
from eixgnn.eixgnn import EiXGNN
class GCN(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv1 = GCNConv(dataset.num_node_features, 20)
self.conv2 = GCNConv(20, dataset.num_classes)
def forward(self, data):
x, edge_index, batch = data.x, data.edge_index, data.batch
x = self.conv1(x, edge_index)
x = F.relu(x)
x = global_mean_pool(x, batch)
x = F.softmax(x, dim=1)
return x
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = GCN().to(device)
model.eval()
data = dataset[0].to(device)
explainer = EiXGNN()
explained = explainer.forward(model, data.x, data.edge_index)