I wrote a dataloader and dataset class that below
class Dataset():
def __init__(self, x, y,z,u):
self.x = x+z
self.y = torch.tensor([y] * len(x)+[u] * len(z) )
def __len__(self):
return len(self.x)
def __getitem__(self, i):
return self.x[i],self.y[i]
class DataLoader():
def __init__(self, ds, bs):
self.ds, self.bs = ds, bs
def __iter__(self):
n = len(self.ds)
l = torch.randperm(n)
for i in range(0, n, self.bs):
idxs_l = l[i:i+self.bs]
yield self.ds[idxs_l]
And I get this error for yield self.ds[idxs_l]
*TypeError Traceback (most recent call last)
in
----> 1 batch = next(iter(dataloader))
in iter(self)
7 for i in range(0, n, self.bs):
8 idxs_l = l[i:i+self.bs]
----> 9 yield self.ds[idxs_l]
in getitem(self, i)
8 return len(self.x)
9 def getitem(self, i):
—> 10 return self.x[i],self.y[i]
TypeError: only integer tensors of a single element can be converted to an index*
What should I do?