Способ подачи набора данных мультиклассового изображения, где имя папки может использоваться как метка в Pytorch? - PullRequest
0 голосов
/ 05 января 2020

Я хочу передать набор данных мультиклассового изображения в Pytorch, в основной папке набора данных у меня есть еще 15 папок с разными именами, я хочу использовать имена папок в качестве меток. Например, одно имя папки - «Самолеты» и содержит изображения (1245 изображений), другое имя папки - «Автомобили» и содержит изображения автомобилей (997), аналогично, каждая папка имеет различное количество изображений. Теперь я хочу загрузить их, чтобы обучить мою модель и протестировать ее, но у меня нет отдельных папок для обучения и тестирования. Я хочу использовать имена папок в качестве меток, а также разделить набор данных на обучение и тестирование в равном соотношении. Ваши рекомендации в этом случае будут оценены. Спасибо

1 Ответ

2 голосов
/ 05 января 2020

Чтобы разделить ваш набор данных на наборы поездов и тестов, вы можете использовать функцию random_split:

import torch
from torchvision import datasets, transforms
from torch.utils import data
import numpy as np

dataset = datasets.ImageFolder('path_to_dataset', transform=transforms.ToTensor())

lengths = [int(np.ceil(0.5*len(dataset))),
           int(np.floor(0.5*len(dataset)))]
train_set, test_set = data.random_split(dataset, lengths)

train_dataloader = data.DataLoader(train_set, batch_size=...)
test_dataloader = data.DataLoader(test_set, batch_size=...)

Если вы хотите выполнить отдельные преобразования для наборов данных поезда и тестов, посмотрите здесь: Как использовать разные дополнения данных для Подмножеств в PyTorch

...