Во-первых, я настоятельно рекомендую эту серию youtube , чтобы понять PyTorch и все, что с ним связано.
Тогда вы можете сделать это так: сначала вам нужно отсортировать изображения по папкам, например это:
- train_folder
- classe_1_folder
- classe_2_folder
- ...
- test_folder
- classe_1_folder
- classe_2_folder
- ...
Затем вы можете использовать приведенную ниже функцию, чтобы загрузить свой тренировочный набор и выполнить то же самое с вашей тестовой папкой
train_data = torchvision.datasets.ImageFolder(root= (absolute_path + "train_folder"))
После этого вы можете передать train_data
загрузчику, например:
train_loader = torch.utils.data.DataLoader(train_data , ...)
А затем обучить свою модель простым для l oop :
for batch in train_loader:
***
train_your_model()
***
РЕДАКТИРОВАТЬ : Если вам действительно нужно создать класс, сделайте это следующим образом:
df = pd.read_csv("path_to_fic.csv")
df['label'] = df['label'].astype('category')
encode_map = {
'label_0': 0
'label_1': 1,
...
}
df['label'].replace(encode_map, inplace=True)
class TrainData(Dataset):
def __init__(self, images, labels):
# Add a transform here if you need
# load your images here if you prefer
images = ...
self.images = images
self.labels = labels
def __getitem__(self, index):
return self.images[index], self.labels[index]
def __len__ (self):
return len(self.images)
# images = Im.open() # probably need a for loop to load all your images
# images = df[path_to_csv]
images = ... # you can load here or in the class
# depends if you want to pass the dataframe containing the location or the images themselves
labels = df['label']
train_data = TrainData(torch.FloatTensor(images),
torch.FloatTensor(labels))
train_loader = DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)