Можно ли разделить обучающий DataLoader (и набор данных) на обучающие и проверочные наборы данных? - PullRequest
0 голосов
/ 20 ноября 2018

Пакет 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 Ответ

0 голосов
/ 20 ноября 2018

Тем временем я наткнулся на метод random_split.Таким образом, вы не разделяете DataLoader, а разделяете Dataset:

torch.utils.data.random_split(dataset, lengths)
...