snap-stanford / ogb

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

can not run one layer GNN? #151

Closed aries-M closed 3 years ago

aries-M commented 3 years ago

I want to run gnn.py with one layer, so I change the sizes from "25-15" to "25", but it went wrong.

Traceback (most recent call last):
  File "examples/gnn.py", line 235, in <module>
    trainer.fit(model, datamodule=datamodule)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 499, in fit
    self.dispatch()
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 546, in dispatch
    self.accelerator.start_training(self)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py", line 73, in start_training
    self.training_type_plugin.start_training(trainer)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/plugins/training_type/training_type_plugin.py", line 114, in start_training
    self._results = trainer.run_train()
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 607, in run_train
    self.run_sanity_check(self.lightning_module)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 860, in run_sanity_check
    _, eval_results = self.run_evaluation(max_batches=self.num_sanity_val_batches)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py", line 712, in run_evaluation
    for batch_idx, batch in enumerate(dataloader):
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 435, in __next__
File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1085, in _next_data
    return self._process_data(data)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 1111, in _process_data
    data.reraise()
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch/_utils.py", line 428, in reraise
    raise self.exc_type(msg)
ValueError: Caught ValueError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop
    data = fetcher.fetch(index)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 47, in fetch
    return self.collate_fn(data)
  File "/home/xiaojun/.conda/envs/py37/lib/python3.7/site-packages/torch_geometric/data/sampler.py", line 185, in sample
    out = self.transform(*out) if self.transform is not None else out
  File "examples/gnn.py", line 124, in convert_batch
    return Batch(x=x, y=y, adjs_t=[adj_t for adj_t, _, _ in adjs])
rusty1s commented 3 years ago

In case of 1-hop neighborhoods, NeighborSampler will return a single adj object. You can wrap it into a list without changing anything else in def convert_batch:

return Batch(x=x, y=y, adjs_t=[adjs[0]])
aries-M commented 3 years ago

Thank you for your quick reply~ It works!