这是我在 PyTorch 中的代码片段,当我使用 num_workers > 0 时,我的 jupiter 笔记本卡住了,我在这个问题上花了很多时间却没有任何答案。我没有 GPU,仅使用 CPU。
class IndexedDataset(Dataset):
def __init__(self,data,targets, test=False):
self.dataset = data
if not test:
self.labels = targets.numpy()
self.mask = np.concatenate((np.zeros(NUM_LABELED), np.ones(NUM_UNLABELED)))
def __len__(self):
return len(self.dataset)
def __getitem__(self, idx):
image = self.dataset[idx]
return image, self.labels[idx]
def display(self, idx):
plt.imshow(self.dataset[idx], cmap='gray')
plt.show()
train_set = IndexedDataset(train_data, train_target, test = False)
test_set = IndexedDataset(test_data, test_target, test = True)
train_loader = DataLoader(train_set, batch_size=BATCH_SIZE, num_workers=2)
test_loader = DataLoader(test_set, batch_size=BATCH_SIZE, num_workers=2)
任何帮助,不胜感激。
When num_workers
大于0,PyTorch使用多个进程来加载数据。
Jupyter 笔记本存在多处理方面的已知问题。
解决此问题的一种方法是不使用 Jupyter 笔记本 - 只需编写一个普通的 .py 文件并通过命令行运行它。
或者尝试使用此处建议的内容:Jupyter 笔记本永远不会使用多重处理完成处理(Python 3).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)