I'm trying to make a simple image classifier using PyTorch. This is how I load the data into a dataset and dataLoader:
batch_size = 64
validation_split = 0.2
data_dir = PROJECT_PATH+"/categorized_products"
transform = transforms.Compose([transforms.Grayscale(), CustomToTensor()])
dataset = ImageFolder(data_dir, transform=transform)
indices = list(range(len(dataset)))
train_indices = indices[:int(len(indices)*0.8)]
test_indices = indices[int(len(indices)*0.8):]
train_sampler = SubsetRandomSampler(train_indices)
test_sampler = SubsetRandomSampler(test_indices)
train_loader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, sampler=train_sampler, num_workers=16)
test_loader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, sampler=test_sampler, num_workers=16)
I want to print out the number of images in each class in training and test data separately, something like this:
In train data:
- shoes: 20
- shirts: 14
In test data:
- shoes: 4
- shirts: 3
I tried this:
from collections import Counter
print(dict(Counter(sample_tup[1] for sample_tup in dataset.imgs)))
but I got this error:
AttributeError: 'MyDataset' object has no attribute 'img'