Reputation: 372
I am trying to get cuda to work but I need to change my training input into a tensor. When I tried to do that, I am getting an error when I tried to stack a list of tensor into one tensor.
Code
for epoch in:
alst = []
for x, y in loader:
x = torch.stack(x)
#x = torch.Tensor(x)
#x = torch.stack(x).to(device,dtype=float)
Shape of x: List of tensors
[tensor([[[0.325],
[ 0.1257],
[ 0.1149],
...,
[-1.572],
[-1.265],
[-3.574]],
]), tensor([1,2,3,4,5]), tensor(6,5,4,3,2])]
Error I got
22 alst = []
23 for x, y in loader:
---> 24 x_list = torch.stack(x)
25 # x = torch.Tensor(x)
26 # x = torch.stack(x).to(device,dtype=float)
RuntimeError: Expected object of scalar type Float but got scalar type Long for sequence element 1 in sequence argument at position #1 'tensors'
Not sure what I am doing wrong. I tried x = torch.stack(x).to(device,dtype=float)
as well but it still didn't work.
Upvotes: 0
Views: 1016
Reputation: 24884
First tensor in your output is of float type with values to input your network with, second looks like labels (of type long
).
Furthermore the first one is a tensor
while the second and third element are vectors
(with 6
and 9
elements respectively).
You cannot stack tensors
of different shape hence this won't work no matter the types.
Unpack your x
via
matrix, vector1, vector2 = x
To remove type
warnings cast vector1
and vector2
to float
via
vector1 = vector1.float()
Check their shapes via .shape
attribute and act accordingly.
Probably though you already have batches of data as you are using train_loader
. See: DataLoader documentation for more information and check whether you are using one.
Upvotes: 1