gpt4 book ai didi

neural-network - 使用 DataLoaders 在 PyTorch 中验证数据集

转载 作者:行者123 更新时间:2023-12-03 23:03:28 26 4
gpt4 key购买 nike

我想在 PyTorch 和 Torchvision 中加载 MNIST 数据集,将其分为训练、验证和测试部分。到目前为止,我有:

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)
如果训练数据集在 DataLoader 中,如何将训练数据集划分为训练和验证数据集? ?我想使用训练数据集中的最后 10000 个示例作为验证数据集(我知道我应该做 CV 以获得更准确的结果,我只想在这里快速验证)。

最佳答案

事实证明,在 PyTorch 中将训练数据集拆分为训练和验证要困难得多。
首先,将训练集拆分为训练和验证 子集 (类 Subset),它们是 不是 数据集(类 Dataset):

train_subset, val_subset = torch.utils.data.random_split(
train, [50000, 10000], generator=torch.Generator().manual_seed(1))
然后从这些数据集中获取实际数据:
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]
注意这样我们 不要Dataset对象,所以我们不能使用 DataLoader批量训练的对象。如果你想使用 DataLoaders,它们直接与 Subsets 一起工作:
train_loader = DataLoader(dataset=train_subset, shuffle=True, batch_size=BATCH_SIZE)
val_loader = DataLoader(dataset=val_subset, shuffle=False, batch_size=BATCH_SIZE)

关于neural-network - 使用 DataLoaders 在 PyTorch 中验证数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64092369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com