昨天晚上跑起來一個classification實驗,今天發(fā)現(xiàn)訓(xùn)練loss在降,然而accuracy永遠(yuǎn)是0 。。。直覺告訴我evaluation有問題
然后發(fā)現(xiàn)自己寫了個很愚蠢的bug
accuracy對應(yīng)的tensor出來是int型的,我用到了一個除法取平均。而pytorch里無論用 / or // 結(jié)果都是取整,,accuracy一直就沒有。。
所以轉(zhuǎn)換成float就沒問題了,,低級bug,下不為例
補充:pytorch tensor division/除法
除法的時候要注意數(shù)據(jù)類型的問題
a = torch.div(torch.tensor([160, 110]), 0.137)
jupyter notebook就會奔潰, 因為torch.tensor([160, 110])是torch.int64數(shù)據(jù)類型, 而0.137(或者說torch.tensor(0.137))是torch.float32類型.
如果改成下面這樣, 就會順利運行
a = torch.div(torch.tensor([160, 110]).float(), 0.137)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Pytorch Tensor的索引與切片例子
- Pytorch之?dāng)U充tensor的操作
- pytorch 把圖片數(shù)據(jù)轉(zhuǎn)化成tensor的操作
- Pytorch 擴展Tensor維度、壓縮Tensor維度的方法
- Pytorch生成隨機數(shù)Tensor的方法匯總
- PyTorch中Tensor的數(shù)據(jù)類型和運算的使用
- Pytorch 使用tensor特定條件判斷索引