Neural network 使用数据加载程序在PyTorch中验证数据集
我想在PyTorch和Torchvision中加载MNIST数据集,将其分为训练、验证和测试部分。到目前为止,我已经:Neural network 使用数据加载程序在PyTorch中验证数据集,neural-network,pytorch,Neural Network,Pytorch,我想在PyTorch和Torchvision中加载MNIST数据集,将其分为训练、验证和测试部分。到目前为止,我已经: def load_dataset(): train_loader = torch.utils.data.DataLoader( torchvision.datasets.MNIST( '/data/', train=True, download=True, transform=torchvision.tra
def load_dataset():
train_loader = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
'/data/', train=True, download=True,
transform=torchvision.transforms.Compose([
torchvision.transforms.ToTensor()])),
batch_size=batch_size_train, shuffle=True)
test_loader = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
'/data/', train=False, download=True,
transform=torchvision.transforms.Compose([
torchvision.transforms.ToTensor()])),
batch_size=batch_size_test, shuffle=True)
如果培训数据集位于
数据加载器中,如何将其划分为培训和验证?我想使用培训数据集中的最后10000个示例作为验证数据集(我知道我应该进行CV以获得更准确的结果,我只想在这里进行快速验证)。在PyTorch中将培训数据集拆分为培训和验证,结果证明比实际困难得多
首先,将训练集拆分为训练和验证子集(类子集
),它们是非数据集(类数据集
):
然后从这些数据集中获取实际数据:
X_train = train_subset.dataset.data[train_subset.indices]
y_train = train_subset.dataset.targets[train_subset.indices]
X_val = val_subset.dataset.data[val_subset.indices]
y_val = val_subset.dataset.targets[val_subset.indices]
请注意,通过这种方式,我们没有数据集
对象,因此我们不能使用数据加载器
对象进行批量培训。如果要使用数据加载器,它们直接与子集一起工作:
train_loader = DataLoader(dataset=train_subset, shuffle=True, batch_size=BATCH_SIZE)
val_loader = DataLoader(dataset=val_subset, shuffle=False, batch_size=BATCH_SIZE)
这回答了你的问题吗@哈拉什:是和否,进一步阅读后,这似乎是一个更复杂的问题。我已经找到了解决方案,但它比普通库中的要复杂得多。是的……就是这样val_loader
应该将val_subset
作为数据集参数,而不是train_subset
,对吗?@R.Rayl是的,当然,我会编辑这个
train_loader = DataLoader(dataset=train_subset, shuffle=True, batch_size=BATCH_SIZE)
val_loader = DataLoader(dataset=val_subset, shuffle=False, batch_size=BATCH_SIZE)