報錯定位到的位置是在:
self.bias = self.bias.cuda()
意為將把bias轉到gpu上報錯;
網(wǎng)上查詢了很多問題都沒解決,受到這篇博客的啟發(fā);pytorch 手動設置參數(shù)變量 并轉到cuda上_XiaoPangJix1的博客-CSDN博客
原因可能是:bias是torch.nn.Parameter(),轉移到cuda上失敗,提示此報錯;
其實根本原因比較簡單,就是在model定義的時候沒有將model轉移到cuda上,因此修改代碼為如下即可:
a = torch.Tensor(1,1,256,256)
if torch.cuda.is_available():
a=a.cuda()
EE_Block = EdgeEnhanceREC().cuda() #實例化并轉移到cuda
else:
EE_Block = EdgeEnhanceREC() #只進行實例化,保持tensor和model在同一個設備上就行
b = EE_Block(a)
print(b.shape) #不改變size,[1,1,256,256]->[1,1,256,256]
甚至可用改變原來代碼中很多“if torch.cuda.is_available():”無用的判別;文章來源:http://www.zghlxwxcb.cn/news/detail-597681.html
大道至簡,被這個簡單的問題困擾了好幾天。文章來源地址http://www.zghlxwxcb.cn/news/detail-597681.html
到了這里,關于TypeError: cannot assign ‘torch.cuda.FloatTensor‘ as parameter ‘bias‘ (torch.nn.Parameter or None ex的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!