📚 Official implementation of ScoreCAM GNN - torch-geometric implementation
docs | ||
scgnn | ||
test | ||
.coveragerc | ||
.gitignore | ||
AUTHORS.md | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENCE | ||
Makefile | ||
README.md | ||
setup.cfg | ||
setup.py |
ScoreCAM GNN
Official implementation of ScoreCAM GNN algorithm. For further informations, see ScoreCAM GNN : a generalization of an optimal local post-hoc explaining method to any geometric deep learning models, paper
Run an example
from torch_geometric.datasets import TUDataset
dataset = TUDataset(root="/tmp/ENZYMES", name="ENZYMES")
data = dataset[0]
from scgnn.scgnn import SCGNN
import torch.nn.functional as F
from torch_geometric.nn import GCNConv, global_mean_pool
model = Sequential(
"data",
[
(
lambda data: (data.x, data.edge_index, data.batch),
"data -> x, edge_index, batch",
),
(GCNConv(dataset.num_node_features, 64), "x, edge_index -> x"),
(GCNConv(64, dataset.num_classes), "x, edge_index -> x"),
(global_mean_pool, "x, batch -> x"),
],
)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
data = dataset[0].to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)
model.eval()
out = model(data)
explainer = SCGNN()
explained = explainer.forward(
model,
data.x,
data.edge_index,
target=2,
interest_map_norm=True,
score_map_norm=True,
)