問題描述
BrokenPipeError: [Errno 32] Broken pipe
原因分析
Windows
使用DataLoader
時設置num_workers
的問題。
解決方案
兩種解決方案,任選一種即可!
方案1
把代碼放到if __name__ == "__main__":
下運行
if __name__ == "__main__":
train_dataloader = DataLoader(
dataset=dataset,
batch_size=32,
shuffle=True,
num_workers=8
)
方案2
num_workers
不要更改,設置為默認值0。
溫馨提示
num_workers
(int, optional): how many subprocesses to use for data loading.0
means that the data will be loaded in the main process. (default:0
)
num_workers參數允許輸入的數據類型是整型,表示加載數據的子進程數。也就是使用多進程來加載數據,這樣效率更高一些。如果設置為0
表示子進程數是0
,也就是只用一個主進程來加載數據。數據量不多的情況下,不需要用多進程,因為進程的創建和銷毀也花時間。
引用參考
https://blog.csdn.net/qq_33666011/article/details/81873217
https://pytorch.org/docs/stable/_modules/torch/utils/data/dataloader.html