torchvision: разделение загрузчика данных / набора данных
Пакет torchvision обеспечивает легкий доступ к часто используемым наборам данных. Вы бы использовали их так:
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
shuffle=False, num_workers=2)
Видимо, вы можете переключаться только между train=True
а также train=False
, Документы объясняют:
train (bool, необязательно) - если True, создает набор данных из training.pt, в противном случае из test.pt.
Но это противоречит обычной практике трехстороннего разделения. Для серьезной работы мне нужен другой DataLoader
с проверочным набором. Кроме того, было бы неплохо указать пропорции разделения самостоятельно. Они не говорят, какой процент от набора данных зарезервирован для тестирования, возможно, я хотел бы изменить это.
Я предполагаю, что это сознательное дизайнерское решение. Каждый, кто работает с одним из этих наборов данных, должен использовать один и тот же набор тестов. Это делает результаты сопоставимыми. Но мне все еще нужно получить валидацию из trainloader
, Можно ли разделить DataLoader
на два отдельных потока данных?
1 ответ
Как только я отправил этот вопрос, я наткнулся на ответ (мой плохой, это действительно не скрыто). Вы не разделяете DataLoader
Вы разделили Dataset
:
torch.utils.data.random_split(dataset, lengths)