[英]Pytorch Dataloader not spliting data into batch
I have dataset class like this:我有这样的数据集 class:
class LoadDataset(Dataset):
def __init__(self, data, label):
self.data = data
self.label = label
def __len__(self):
dlen = len(self.data)
return dlen
def __getitem__(self, index):
return self.data, self.label
then i load my image dataset which have [485, 1, 32, 32] shape然后我加载具有 [485, 1, 32, 32] 形状的图像数据集
train_dataset = LoadDataset(xtrain, ytrain)
print(len(train_dataset))
# output 485
then i load the data with DataLoader
然后我用
DataLoader
加载数据
train_loader = DataLoader(train_dataset, batch_size=32)
and then i iterate the data:然后我迭代数据:
for epoch in range(num_epoch):
for inputs, labels in train_loader:
print(inputs.shape)
the output prints torch.Size([32, 485, 1, 32, 32])
, it should be torch.Size([32, 1, 32, 32])
, output 打印
torch.Size([32, 485, 1, 32, 32])
,它应该是torch.Size([32, 1, 32, 32])
,
Can anyone help me?谁能帮我?
The __getitem__
method should return 1 data piece, you returned all of them. __getitem__
方法应该返回 1 个数据块,你返回了所有的数据块。
Try this:试试这个:
class LoadDataset(Dataset):
def __init__(self, data, label):
self.data = data
self.label = label
def __len__(self):
dlen = len(self.data)
llen = len(self.label) # different here
return min(dlen, llen) # different here
def __getitem__(self, index):
return self.data[index], self.label[index] # different here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.