您好,登錄后才能下訂單哦!
本篇內容介紹了“SSD-pytorch坑怎么解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
我在運行
python train.py
的時候,發現確實loss降的異常的快。
運行
python eval.py
的時候mAP是一個很接近0的數。
經過思考,發現問題出在原來博客的第4個點:
(下面這段是從原文中復制來的)
4.train.py代碼中,在迭代過程中,每次執行batch張圖片,通過images, targets = next(batch_iterator)讀取圖片時,如果next()中沒有數據后會觸發Stoplteration異常,使用下面語句替換 images, targets = next(batch_iterator)將解決這種異常問題。 while True: try: # 獲得下一個值: images, targets = next(batch_iterator) except StopIteration: # 遇到StopIteration就退出循環 break
但是其實是不能夠這樣改的,這么改的思路是遇到了問題就跳過去,這樣很明顯是不可以的,會導致不斷的跳出循環,沒有在進行有效的train,所以loss會降得很快,最后的結果也不好。
這個問題出現的原因是dataloader導入數據之后經過了一輪的迭代,再次導入的時候發現沒有數據了,也就是iterable完成之后,觸發了StopIteration,然后跳出了循環。
既然再次導入的時候沒有數據了,那我們就再用一個dataloader就行了。
將train.py(165行)的
images, targets = next(batch_iterator)
更改成:
try: images, targets = next(batch_iterator) except StopIteration: batch_iterator = iter(data_loader) images, targets = next(batch_iterator)
問題解決。
“SSD-pytorch坑怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。