pyg-team/pytorch_geometric
Voir sur GitHubLaplacian Eigenvector PE is not deterministic
Open
#7 499 ouverte le 2 juin 2023
bugdeterminismhelp wantedtransform
Métriques du dépôt
- Stars
- (19 985 stars)
- Métriques de merge PR
- (Merge moyen 16j 3h) (13 PRs mergées en 30 j)
Description
Laplacian Eigenvector PE is not deterministic, i.e. it produces different encodings when applied to the same graph at different times even with everything seeded.
This is a code that reproduces it:
import torch
import random
import numpy as np
from torch_geometric.datasets import Planetoid
from torch_geometric.transforms import AddLaplacianEigenvectorPE
def seed_everything(seed: int):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
seed_everything(42)
dataset = Planetoid(root='../datasets', name='Cora')
data = dataset[0]
lpe1 = AddLaplacianEigenvectorPE(k=124, attr_name="lpe1")
lpe2 = AddLaplacianEigenvectorPE(k=124, attr_name="lpe2")
# add lpe1
data = lpe1(data)
# add lpe2
data = lpe2(data)
# get pe
pe1 = data.lpe1
pe2 = data.lpe2
print(torch.allclose(pe1, pe2)) # prints False
# print for manual inspection
print(pe1[:5, :10])
print(pe2[:5, :10])
Environment
- PyG version: 2.3.1
- PyTorch version: 2.0.1+cu118
- OS: Linux (Ubuntu 20.04)
- Python version: 3.10
- CUDA/cuDNN version: 12.0
- How you installed PyTorch and PyG (
conda,pip, source): pip. - Any other relevant information (e.g., version of
torch-scatter): None.