snap-stanford / ogb

Benchmark datasets, data loaders, and evaluators for graph machine learning
https://ogb.stanford.edu
MIT License
1.89k stars 397 forks source link

Error in the BondEncoder in ogb.graphpropped.mol_encoder #479

Open vindakunte opened 2 months ago

vindakunte commented 2 months ago

I am encountering the following error while extracting bond encodings. I'm passing the edge_attr to the BondEncoder but get an index out of range error. The error message is as follows:


IndexError Traceback (most recent call last) Cell In[12], line 2 1 bond_encoder = BondEncoder(emb_dim=100) ----> 2 print(bond_encoder(data.edge_attr))

File /opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py:1518, in Module._wrapped_call_impl(self, *args, kwargs) 1516 return self._compiled_call_impl(*args, *kwargs) # type: ignore[misc] 1517 else: -> 1518 return self._call_impl(args, kwargs)

File /opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py:1527, in Module._call_impl(self, *args, *kwargs) 1522 # If we don't have any hooks, we want to skip the rest of the logic in 1523 # this function, and just call forward. 1524 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1525 or _global_backward_pre_hooks or _global_backward_hooks 1526 or _global_forward_hooks or _global_forward_pre_hooks): -> 1527 return forward_call(args, **kwargs) 1529 try: 1530 result = None

Cell In[11], line 18, in BondEncoder.forward(self, edge_attr) 16 bond_embedding = torch.zeros_like(self.bond_embedding_list[0].weight) 17 for i in range(edge_attr.shape[1]): ---> 18 bond_embedding += self.bond_embedding_listi 20 return bond_embedding

File /opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py:1518, in Module._wrapped_call_impl(self, *args, kwargs) 1516 return self._compiled_call_impl(*args, *kwargs) # type: ignore[misc] 1517 else: -> 1518 return self._call_impl(args, kwargs)

File /opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py:1527, in Module._call_impl(self, *args, *kwargs) 1522 # If we don't have any hooks, we want to skip the rest of the logic in 1523 # this function, and just call forward. 1524 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1525 or _global_backward_pre_hooks or _global_backward_hooks 1526 or _global_forward_hooks or _global_forward_pre_hooks): -> 1527 return forward_call(args, **kwargs) 1529 try: 1530 result = None

File /opt/conda/lib/python3.10/site-packages/torch/nn/modules/sparse.py:162, in Embedding.forward(self, input) 161 def forward(self, input: Tensor) -> Tensor: --> 162 return F.embedding( 163 input, self.weight, self.padding_idx, self.max_norm, 164 self.norm_type, self.scale_grad_by_freq, self.sparse)

File /opt/conda/lib/python3.10/site-packages/torch/nn/functional.py:2233, in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse) 2227 # Note [embedding_renorm set_grad_enabled] 2228 # XXX: equivalent to 2229 # with torch.no_grad(): 2230 # torch.embeddingrenorm 2231 # remove once script supports set_grad_enabled 2232 _no_grad_embeddingrenorm(weight, input, max_norm, norm_type) -> 2233 return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)

IndexError: index out of range in self

vindakunte commented 2 months ago

Is there an error in how I'm passing arguments to the BondEncoder? Following is the snippet that i'm trying to run: train_dataset = PCQM4Mv2(root = 'dataset/', split = 'test') val_dataset = PCQM4Mv2(root = 'dataset/', split = 'val') print(train_dataset) data = (train_dataset.get(12)) bond_encoder = BondEncoder(emb_dim=100) print(bond_encoder(data.edge_attr))