python 23 lines · 1 tab

Custom Datasets and DataLoaders for robust training input pipelines

1 tab
import pandas as pd
import torch
from PIL import Image
from torch.utils.data import Dataset, DataLoader

class ProductImageDataset(Dataset):
    def __init__(self, metadata_path, image_root, transform=None):
        self.df = pd.read_csv(metadata_path)
        self.image_root = image_root
        self.transform = transform

    def __len__(self):
        return len(self.df)

    def __getitem__(self, index):
        row = self.df.iloc[index]
        image = Image.open(f"{self.image_root}/{row['image_name']}").convert('RGB')
        if self.transform:
            image = self.transform(image)
        label = torch.tensor(row['label'], dtype=torch.long)
        return image, label

train_loader = DataLoader(dataset=train_dataset, batch_size=64, shuffle=True, num_workers=4, pin_memory=True)
1 file · python Explain with highlit

Input pipelines are part of the model system, not an afterthought. I keep dataset classes deterministic, move expensive transforms into explicit stages, and use DataLoader settings that match hardware limits. Good batching and collation logic can remove a surprising amount of GPU idle time.

Share this code

Here's the card — post it anywhere.

Custom Datasets and DataLoaders for robust training input pipelines — share card
Link copied