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)
Другие вопросы по тегам