batch_size = 2# 256 def get_dataloader_workers(): #@save """使用4個進程來讀取數據。""" return 4 train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True, num_workers=get_dataloader_workers()) timer = d2l.Timer() for X, y in train_iter: continue f'{timer.stop():.2f} sec'
問題:動手學深度學習2.0,softmax回歸,讀取小批量數據是出現超時報錯。具體如下:
我的環境是:Anaconda 的虛擬環境,使用jupyter notebook進行編譯,電腦是聯想拯救者R720,i5處理器,2g獨顯;
我所使用的CPU運行,最初是批量256張圖片數據,同時使用4線程進行讀取,此時會報錯!
查閱網上的回答,說最可能的原因是;
- cuda 虛擬環境的共享內存不足,解決辦法是,要么改成更小的batchsize,
- 將numworkers = 4注釋掉,不用多進程
解決過程:
1、只將batchsize改小,變為2,依舊報錯
2、將進程num_workers=get_dataloader_workers()改為0、1、2可以使用
估計還是電腦太差了不太行的緣故,畢竟用了快四年了。
3、后續我又試着將batchsize改回256,依舊可以運行,但是有時候多運行幾次就會報錯,估計是緩存內存,不夠的緣故,我只要重新啟動內核,運行一次,就可以了。
4、我將進程改為4,重啟內核,重新運行,還是會報錯,具體原因不得而知,先繼續學習吧。