Skip to content

KeyError: 'batch[0]'

def atoms_collate_fn(batch):
    print("Batch received in collate_fn:", batch)
    elem = batch[0]  # This line fails if batch is a dict or tensor
    ...

I run hotpp train in the examples/carbon, error "KeyError: '0'" when batch is a dict or tensor, even batch is null. I feel confused, please help me with this problem.

Thanks!


Traceback (most recent call last):
  File "/root/miniconda3/envs/quantum/bin/hotpp", line 33, in <module>
    sys.exit(load_entry_point('miaonet', 'console_scripts', 'hotpp')())
  File "/home/StarWars/hotpp/hotpp/entrypoints/main.py", line 236, in main
    f(**dict_args)
  File "/home/StarWars/hotpp/hotpp/entrypoints/train.py", line 515, in main
    trainer.fit(lit_model, datamodule=dataset)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 544, in fit
    call._call_and_handle_interrupt(
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/trainer/call.py", line 43, in _call_and_handle_interrupt
    return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/strategies/launchers/subprocess_script.py", line 105, in launch
    return function(*args, **kwargs)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 580, in _fit_impl
    self._run(model, ckpt_path=ckpt_path)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 987, in _run
    results = self._run_stage()
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1033, in _run_stage
    self.fit_loop.run()
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 205, in run
    self.advance()
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/loops/fit_loop.py", line 363, in advance
    self.epoch_loop.run(self._data_fetcher)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 140, in run
    self.advance(data_fetcher)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/loops/training_epoch_loop.py", line 212, in advance
    batch, _, __ = next(data_fetcher)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/loops/fetchers.py", line 133, in __next__
    batch = super().__next__()
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/loops/fetchers.py", line 60, in __next__
    batch = next(self.iterator)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/utilities/combined_loader.py", line 341, in __next__
    out = next(self._iterator)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/pytorch_lightning/utilities/combined_loader.py", line 78, in __next__
    out[i] = next(self.iterators[i])
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 628, in __next__
    data = self._next_data()
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1333, in _next_data
    return self._process_data(data)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1359, in _process_data
    data.reraise()
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/torch/_utils.py", line 543, in reraise
    raise exception
KeyError: Caught KeyError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
    data = fetcher.fetch(index)
  File "/root/miniconda3/envs/quantum/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 61, in fetch
    return self.collate_fn(data)
  File "/home/StarWars/hotpp/hotpp/data/base.py", line 126, in atoms_collate_fn
    elem = batch[0]
KeyError: 0
Edited by Qingui Sun