以下代码示例适用于 Python,但 Linux 中的 VSCode 失败 (但不是 Windows 中的 VSCode)。我想知道是我的代码有问题,还是Linux下的VSCode有问题?
#Test of PyTorch DataLoader and Visual Studio Code
from torch.utils.data import Dataset, DataLoader
class SimpleData(Dataset):
"""Very simple dataset"""
def __init__(self):
self.data = range(20)
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
if __name__ == '__main__':
#Initialize DataLoader with above Dataset:
dataloader = DataLoader(SimpleData(), batch_size=4, num_workers=1)
print('Using DataLoader to show data in batches: ')
for i, sample_batch in enumerate(dataloader): #This fails in VSCode in Linux
print('batch ', i, ':', sample_batch)
print("--- Done ---")
预期的输出是:
Using DataLoader to show data in batches:
batch 0 : tensor([0, 1, 2, 3])
batch 1 : tensor([4, 5, 6, 7])
batch 2 : tensor([ 8, 9, 10, 11])
batch 3 : tensor([12, 13, 14, 15])
batch 4 : tensor([16, 17, 18, 19])
--- Done ---
但是对于 Linux 中的 VSCode,它在打印第一行后挂起。
最佳答案
您是否尝试过 num_workers=0?
可能是 VS Code 无法在 linux 上正确生成新进程。
关于visual-studio-code - PyTorch DataLoader 的 VSCode 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53660465/