import torch class RetailDataset(torch.utils.data.Dataset): def __init__(self, data, labels=None, transform=None, device=None): self.data = data self.labels = labels self.num_classes = len(set(labels)) self.transform = transform self.device = device if device is not None else torch.device("cpu") def __getitem__(self, idx): item = { key: torch.tensor(val[idx].detach().clone(), device=self.device) for key, val in self.data.items() } item["labels"] = torch.tensor(self.labels[idx], device=self.device) return item def __len__(self): return len(self.labels) def __repr__(self): return "RetailDataset" def __str__(self): return str( { "data": self.data["pixel_values"].shape, "labels": self.labels.shape, "num_classes": self.num_classes, "num_samples": len(self.labels), } )