除錯SSD-pytorch程式碼問題彙總
程式碼連結:https://github.com/amdegroot/ssd.pytorch
1.執行demo-ssd.py,改動detection.py中49行:
if scores.numel() == 0:#scores.dim()
2. multibox_loss.py 中,97行
“loss_c[pos] = 0” 除錯過程中發現 loss_c的shape與pos的shape 不同,會出現不匹配錯誤,因此將此句改為以下:
loss_c[pos.view(-1,1)] = 0
將pos通過view(-1,1) 改為與loss_c相匹配的shape。
3.multibox_loss.py中 N=num_pos.data.sum()的dtype為torch.int64,而進行除法操作的 loss_l 與loss_c的dtype為torch.float32,執行時會出現 ‘torch.cuda.LongTensor but found type torch.cuda.FloatTensor for argument’類似錯誤,此時需要檢視引數型別,將N的型別改為torch.float32即可。
N = num_pos.data.sum() N=N.float()
4.train.py程式碼中,在迭代過程中,每次執行batch張圖片,通過images, targets = next(batch_iterator)
while True: try: # 獲得下一個值: images, targets = next(batch_iterator) except StopIteration: # 遇到StopIteration就退出迴圈 break
5.RuntimeError: CUDNN_STATUS_INTERNAL_ERROR的解決辦法:
需要清除CUDA快取,使用sudo進行,但它屬於Linux命令,windows中需要進行以下操作:
(1).在任意目錄中新建文字檔案,命名為sudo.js
(2).用記事本開啟剛才新建的檔案,貼上下面程式碼
var command = WScript.Arguments.Item(0); |
使用cmd開啟sudo.js檔案即可進行sudo操作。
(3).執行sudo rm -f ~/.nv/ (一定最後邊不要漏掉“/”,否則會提示“.nv”是目錄)