使用DataLoader報錯AttributeError: 'int' object has no attribute 'numel'


  在跑這段代碼的時候報錯

concat_dataset = ConcatDataset([train_dataset, new_set])
train_data = DataLoader(concat_dataset, batch_size=batch_size, shuffle=True, num_workers=2, pin_memory=True)
for data, y in train_data:
  print(data, y)

Original Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop
   data = fetcher.fetch(index)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 47, in fetch
  return self.collate_fn(data)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/collate.py", line 84, in default_collate
  return [default_collate(samples) for samples in transposed]
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/collate.py", line 84, in <listcomp>
  return [default_collate(samples) for samples in transposed]
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/collate.py", line 53, in default_collate
  numel = sum([x.numel() for x in batch])
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/collate.py", line 53, in <listcomp>
  numel = sum([x.numel() for x in batch])
AttributeError: 'int' object has no attribute 'numel'

  使用了ConcatDataset合並兩個dataset后,進行數據加載的時候報錯了,主要原因是合並的兩個dataset返回的數據類型不一致,遍歷兩個dataset可以看到一個返回的是'int',一個返回的是'tensor'。

      

 

   將兩個dataset返回的結果改成一致的,就可以解決問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM