Runtime Error RuntimeError: Expected object of type torch.FloatTensor but found type torch.LongTensor for argument #2 'other'

RuntimeError Traceback (most recent call last)
~/Ternary-Weights-Network/main.py in ()
138
139 if name == ‘main’:
–> 140 main()

~/Ternary-Weights-Network/main.py in main()
81 for epoch_index in range(1,args.epochs+1):
82 adjust_learning_rate(learning_rate,optimizer,epoch_index,args.lr_epochs)
—> 83 train(args,epoch_index,train_loader,model,optimizer,criterion)
84 acc = test(args,model,test_loader,criterion)
85 if acc > best_acc:

~/Ternary-Weights-Network/main.py in train(args, epoch_index, train_loader, model, optimizer, criterion)
96 optimizer.zero_grad()
97
—> 98 output = model(data)
99 loss = criterion(output,target)
100 loss.backward()

~/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py in call(self, *input, **kwargs)
475 result = self._slow_forward(*input, **kwargs)
476 else:
–> 477 result = self.forward(*input, **kwargs)
478 for hook in self._forward_hooks.values():
479 hook_result = hook(self, input, result)

~/Ternary-Weights-Network/model.py in forward(self, x)
75 self.fc2 = TernaryLinear(512,10)
76 def forward(self,x):
—> 77 x = self.conv1(x)
78 x = F.relu(F.max_pool2d(self.bn_conv1(x),2))
79 x = self.conv2(x)

~/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py in call(self, *input, **kwargs)
475 result = self._slow_forward(*input, **kwargs)
476 else:
–> 477 result = self.forward(*input, **kwargs)
478 for hook in self._forward_hooks.values():
479 hook_result = hook(self, input, result)

~/Ternary-Weights-Network/model.py in forward(self, input)
61 super(TernaryConv2d,self).init(*args,**kwargs)
62 def forward(self,input):
—> 63 self.weight.data = Ternarize(self.weight.data)
64 out = F.conv2d(input, self.weight, self.bias, self.stride,self.padding, self.dilation, self.groups)
65 return out

~/Ternary-Weights-Network/model.py in Ternarize(tensor)
14 output = torch.zeros(tensor.size())
15 delta = Delta(tensor)
—> 16 alpha = Alpha(tensor,delta)
17 for i in range(tensor.size()[0]):
18 for w in tensor[i].view(1,-1):

~/Ternary-Weights-Network/model.py in Alpha(tensor, delta)
34 count = truth_value.sum()
35 abssum = torch.matmul(absvalue,truth_value.type(torch.FloatTensor).view(-1,1))
—> 36 Alpha.append(abssum/count)
37 alpha = Alpha[0]
38 for i in range(len(Alpha) - 1):

RuntimeError: Expected object of type torch.FloatTensor but found type torch.LongTensor for argument #2 ‘other’

Help needed, thanks in advance

As the error message says, on this line Alpha.append(abssum/count), you perform a tensor operations between a FloatTensor and a LongTensor while both should be of the same type. I would guess abssum is a FloatTensor and count is a LongTensor? You need to convert the LongTensor into a FloatTensor with .float() or .type_as(the_other).

1 Like

thanks for your reply @albanD, i solved that problem, now i have an other error, going to post here… i believe you can help.
TypeError: ‘list’ object is not callable

Traceback (most recent call last):
File “/home/akb/pytorch_learning/main.py”, line 141, in
main()
File “/home/akb/pytorch_learning/main.py”, line 133, in main
train(args,epoch_index,train_loader,model,optimizer,criterion)
File “/home/akb/pytorch_learning/main.py”, line 13, in train
for batch_idx,(data,target) in enumerate(train_loader):
File “/home/akb/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py”, line 314, in next
batch = self.collate_fn([self.dataset[i] for i in indices])
File “/home/akb/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py”, line 314, in
batch = self.collate_fn([self.dataset[i] for i in indices])
File “/home/akb/anaconda3/lib/python3.6/site-packages/torchvision-0.2.1-py3.6.egg/torchvision/datasets/mnist.py”, line 77, in getitem
File “/home/akb/anaconda3/lib/python3.6/site-packages/torchvision-0.2.1-py3.6.egg/torchvision/transforms/transforms.py”, line 49, in call
TypeError: ‘list’ object is not callable

Thanks in advance

Hi,

Not sure what’s happening here just from the stack trace, but it looks like you specify transforms the wrong way for your dataset. Make sure to follow the examples in the doc.

1 Like

yes , you are right buddy, before i added extra Resize line… thanks for your help. appreciated