2

运行我的代码时,我收到此错误消息“ RuntimeError: DataLoader worker (pid(s) 48817, 48818) exited unexpectedly ”我完全不确定从哪里开始解决这个问题。任何指导将不胜感激。代码和回溯发布在下面

batch_size = 128
image_size = (64,64)
stats = (0.5, 0.5, 0.5), (0.5, 0.5, 0.5)

transform_ds = transforms.Compose([transforms.Resize(image_size),
#                                    transforms.RandomCrop(32, padding=2),
#                                    transforms.RandomHorizontalFlip(),
                                   transforms.ToTensor(),
                                   transforms.Normalize(*stats)
                                   ])

train_ds = facesDataset(csv_file = 'imagesdataset.csv', root_dir = 'images', 
                      transform = transform_ds)

train_dl = DataLoader(train_ds, batch_size, shuffle=True, num_workers=3, pin_memory=True)
print(len(train_ds))

def denorm(img_tensors):
    return img_tensors * stats[1][0] + stats[0][0]

def show_images(img, nmax=64):
    fig, ax = plt.subplots(figsize=(8, 8))
    ax.set_xticks([]); ax.set_yticks([])
    ax.imshow(make_grid(denorm(img.detach()[:nmax]), nrow=8).permute(1, 2, 0))

def show_batch(dl, nmax=64):
    for img, _ in dl:
        show_images(img, nmax)
        break

show_batch(train_dl)

追溯

Traceback (most recent call last):
  File "/Users/___/Desktop/stylegan/stylegan.py", line 52, in <module>
    show_batch(train_dl)
  File "/Users/___/Desktop/stylegan/stylegan.py", line 48, in show_batch
    for img, _ in dl:
  File "/Users/___/opt/anaconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 521, in __next__
    data = self._next_data()
  File "/Users/___/opt/anaconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1186, in _next_data
    idx, data = self._get_data()
  File "/Users/___/opt/anaconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1152, in _get_data
    success, data = self._try_get_data()
  File "/Users/___/opt/anaconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 1003, in _try_get_data
    raise RuntimeError('DataLoader worker (pid(s) {}) exited unexpectedly'.format(pids_str)) from e
RuntimeError: DataLoader worker (pid(s) 48817, 48818) exited unexpectedly
4

1 回答 1

3

原因之一可能是使用multiprocessing加载数据。据我所知,在 Windows 中,如果您不设置num_workers0则会出现错误。所以我建议你尝试不使用num_workers(因为默认情况下它是0)或者只是设置它num_workers=0

train_dl = DataLoader(train_ds, batch_size, shuffle=True, num_workers=0, pin_memory=True)
于 2021-08-26T04:27:10.107 回答