解決pytorch報錯BrokenPipeError: [Errno 32] Broken pipe


問題描述

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


免責聲明!

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



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