Python pytorch自定义数据集:DataLoader返回张量列表,而不是列表的张量
我将我的训练数据定义为Python pytorch自定义数据集:DataLoader返回张量列表,而不是列表的张量,python,pytorch,Python,Pytorch,我将我的训练数据定义为[([1,3,5],0),([2,4,6],1)]:输入([1,3,5])成对目标(0) 但当我从数据加载器获取数据时,它会变成: import torch class Custom_Dataset(torch.utils.data.dataset.Dataset): def __init__(self, _dataset): self.dataset = _dataset def __getitem__(self, index):
[([1,3,5],0),([2,4,6],1)]
:输入([1,3,5]
)成对目标(0
)
但当我从数据加载器获取数据时,它会变成:
import torch
class Custom_Dataset(torch.utils.data.dataset.Dataset):
def __init__(self, _dataset):
self.dataset = _dataset
def __getitem__(self, index):
example, target = self.dataset[index]
return example, target
def __len__(self):
return len(self.dataset)
train_data = [([1, 3, 5], 0),
([2, 4, 6], 1)]
train_loader = torch.utils.data.DataLoader(dataset=Custom_Dataset(train_data),
batch_size=1,
shuffle=False)
for inputs, targets in train_loader:
print(inputs)
print(targets)
我如何取而代之:
[tensor([1]), tensor([3]), tensor([5])]
tensor([0])
?
我知道
torch.stack
可以做到这一点,但我可以在自定义数据集类中转换它吗?获得所需输入的一种解决方案是使用numpy
。下面我只修改了示例中的两行,以使其正常工作
tensor([[1],
[3],
[5]])
tensor([0])
此代码的输出将是
import torch
import numpy as np
class Custom_Dataset(torch.utils.data.dataset.Dataset):
def __init__(self, _dataset):
self.dataset = _dataset
def __getitem__(self, index):
example, target = self.dataset[index]
return np.array(example), target
def __len__(self):
return len(self.dataset)
train_data = [([1, 3, 5], 0),
([2, 4, 6], 1)]
train_loader = torch.utils.data.DataLoader(dataset=Custom_Dataset(train_data),
batch_size=1,
shuffle=False)
for inputs, targets in train_loader:
print(inputs)
print(targets)
当然,我假设有一个行向量或列向量对你没有任何影响。否则,您可能需要检查
希望这有帮助
tensor([[1, 3, 5]])
tensor([0])
tensor([[2, 4, 6]])
tensor([1])