pytorch報(bào)錯(cuò):
RuntimeError: Expected object of type Variable[torch.LongTensor] but found type Variable[torch.cuda.ByteTensor] for argument #1 ‘a(chǎn)rgument1'
解決方法:
pytorch框架在存儲(chǔ)labels時(shí),采用LongTensor來(lái)存儲(chǔ),所以在一開(kāi)始dataset返回label時(shí),就要返回與LongTensor對(duì)應(yīng)的數(shù)據(jù)類(lèi)型,即numpy.int64
補(bǔ)充:使用pytorch遇到的各種問(wèn)題及解決方案
自己在使用pytorch遇到的各種問(wèn)題及解決方案:
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'
RuntimeError: The size of tensor a (12800) must match the size of tensor b (100) at non-singleton dimension 0
輸入維度為12800,輸出維度為100,輸入輸出的維度不一致,正確的例子如下:
inputs = [(1,2,3), (2,3,4)]
outsputs = [4, 5]
將輸入輸出的長(zhǎng)度改為一致
取tensor的第一個(gè)元素
XXX.item() # XXX為tensor對(duì)象
tensor中的元素改變數(shù)據(jù)類(lèi)型
# 常常因?yàn)閿?shù)據(jù)類(lèi)型出錯(cuò),要修改數(shù)據(jù)類(lèi)型
XXX.int()
XXX.float()
補(bǔ)充:Pytorch的Dataloader報(bào)錯(cuò):TypeError: batch must contain tensors, numbers, dicts or lists
具體報(bào)錯(cuò):
TypeError: batch must contain tensors, numbers, dicts or lists; found class 'PIL.Image.Image'>
loader的代碼:
dataloader=torch.utils.data.DataLoader(dataset,batch_size=1,shuffle=True)
表面上看這個(gè)代碼沒(méi)有問(wèn)題,實(shí)際上問(wèn)題出在了dataloader機(jī)制的要求上,dataloader要求接收的是一個(gè)tensor,而我的dataset沒(méi)有做transform,所以dataset的getitem函數(shù)返回的是一個(gè)PIL的Image對(duì)象,所以就會(huì)報(bào)錯(cuò)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- PyTorch中Tensor的數(shù)據(jù)類(lèi)型和運(yùn)算的使用
- pytorch中tensor張量數(shù)據(jù)類(lèi)型的轉(zhuǎn)化方式
- pytorch使用 to 進(jìn)行類(lèi)型轉(zhuǎn)換方式