如何利用torch.utils.data.Dataset
and torch.utils.data.DataLoader
根据您自己的数据(不仅仅是torchvision.datasets
)?
有没有办法使用内置的DataLoaders
他们使用的TorchVisionDatasets
用于任何数据集?
是的,这是可能的。只需自己创建对象,例如
import torch.utils.data as data_utils
train = data_utils.TensorDataset(features, targets)
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)
where features
and targets
是张量。features
必须是二维的,即每行代表一个训练样本的矩阵,并且targets
可能是一维或二维,具体取决于您是尝试预测标量还是向量。
EDIT: 回应@sarthak的问题
基本上是的。如果你创建一个类型的对象TensorData
,然后构造函数研究特征张量的第一个维度(实际上称为data_tensor
)和目标张量(称为target_tensor
) 具有相同的长度:
assert data_tensor.size(0) == target_tensor.size(0)
但是,如果您随后想将这些数据输入神经网络,那么您需要小心。虽然卷积层对像您这样的数据起作用,但(我认为)所有其他类型的层都希望数据以矩阵形式给出。因此,如果您遇到这样的问题,那么一个简单的解决方案就是转换您的 4D 数据集(以某种张量形式给出,例如FloatTensor
) 使用以下方法转化为矩阵view
。对于您的 5000xnxnx3 数据集,这将如下所示:
2d_dataset = 4d_dataset.view(5000, -1)
(价值-1
告诉 PyTorch 自动计算出第二维的长度。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)