如何利用torch.utils.data.Dataset
和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)
其中,features
和targets
是张量。features
必须为2D,即矩阵,其中每条线代表一个训练样本,并且targets
可以为1D或2D,具体取决于您要预测标量还是矢量。
希望有帮助!
编辑:对@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自动找出第二维的长度。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句