CSDN搬家失敗,手動匯出markdown後再匯入部落格園
在看 Faster-R-CNN 復現程式碼(https://blog.csdn.net/weixin_44791964/article/details/105739918)的時候,發現推理階段報錯,Dataparallel 無法 gather
參考 https://discuss.pytorch.org/t/nn-dataparallel-typeerror-expected-sequence-object-with-len-0-or-a-single-integer/97082/23 後發現,問題出在網路輸出的 Tensor 其實被某個函式提前放到 CPU 上了,變成了 ndarray,所以 Dataparallel 無法處理
Yes. Sorry, in this line I put tensor to cpu before gather.
return torch.unsqueeze(loss, 0), predicted_interaction.cpu().detach().view(-1, 1), correct_interaction.cpu().detach().view(-1, 1)
看他的回答,意思是在 model(input) 的返回值應該全是 Tensor,但是他的返回值先轉回 CPU 上了,而 Dataparallel 只能處理 cuda 資料,所以報錯
解決辦法:
要麼去掉 Dataparallel,要麼在輸出結果後再轉 CPU。