Özel Veri Kümeleri ve DataLoaders
torch.utils.data.Dataset, __len__/__getitem__, DataLoader, dönüşümler, veri artırma.
Özel Veri Kümeleri ve DataLoaders, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
Verileri Modele Besleme
Eğitim, verileri verimli bir şekilde okumak, dönüştürmek ve toplu gruplar hâlinde işlemek için bir yönteme ihtiyaç duyar. PyTorch iki soyutlama sunar: Veri Kümesi (tek bir örneği nasıl alacağını bilir) ve DataLoader (bunları gruplar ve karıştırır).
from torch.utils.data import Dataset, DataLoaderVeri Kümesi Arayüzü
Özel bir Dataset alt sınıfı iki yöntem uygulamalıdır: __len__ (kaç örnek olduğunu belirtir) ve __getitem__ (bir dizindeki örneği döndürür). PyTorch, verileri almak için bunları çağırır.
__len__ Uygulama
__len__, PyTorch'a veri kümesinin boyutunu bildirir; böylece kaç dizin bulunduğunu ve bir dönemin kaç toplu grup içerdiğini bilir.
class ImageDataset(Dataset):
def __init__(self, paths, labels):
self.paths = paths
self.labels = labels
def __len__(self):
return len(self.paths)__getitem__ Uygulama
__getitem__, verilen bir dizine göre tek bir örneği (ve etiketini) yükleyip döndürür. Bir görüntü dosyasını açıp tensöre dönüştürdüğünüz yer burasıdır.
from PIL import Image
def __getitem__(self, idx):
img = Image.open(self.paths[idx]).convert("RGB")
label = self.labels[idx]
return img, labelDönüşümler Neden Gerekli?
Ham görüntülerin boyutları ve piksel aralıkları farklılık gösterir. Dönüşümler bunları standartlaştırır: sabit bir şekle yeniden boyutlandırır, tensöre dönüştürür ve modelin kararlı biçimde eğitilmesi için piksel değerlerini normalleştirir.
from torchvision import transformstransforms.Compose
transforms.Compose, birkaç dönüşümü sırayla uygulanan tek bir işlem hattında birleştirir. Tipik bir sıra Resize, ardından ToTensor ve Normalize şeklindedir.
tf = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])Dönüşümleri Anlama
Resize uzamsal boyutu sabitler; ToTensor bir PIL görüntüsünü tensöre dönüştürür ve pikselleri [0,1] aralığına ölçekler; Normalize ise her kanalı sıfır ortalama ve birim varyansa göre kaydırıp ölçekler. Bu, yakınsamayı hızlandırır.
Veri Kümesinde Dönüşümleri Uygulama
Dönüşümü veri kümesine aktarın ve her örnek alınırken tutarlı biçimde ön işlenmesi için __getitem__ içinde uygulayın.
class ImageDataset(Dataset):
def __init__(self, paths, labels, transform):
self.paths, self.labels, self.transform = paths, labels, transform
def __getitem__(self, idx):
img = Image.open(self.paths[idx]).convert("RGB")
return self.transform(img), self.labels[idx]DataLoader ile Sarma
DataLoader, bir Veri Kümesini toplu gruplardan oluşan yinelenebilir bir yapıya dönüştürür. Adım başına düşen örnek sayısını denetlemek için batch_size değerini ayarlayın ve her dönemde sırayı rastgeleleştirmek için shuffle=True kullanın; bu, eğitim için önemlidir.
dataset = ImageDataset(paths, labels, tf)
loader = DataLoader(dataset, batch_size=32, shuffle=True)Hız için num_workers
num_workers, GPU modeli eğitirken verileri yükleyip dönüştürmek üzere paralel alt işlemler başlatır ve G/Ç gecikmesini gizler. 4 gibi bir değer, GPU'nun beklemek yerine sürekli veri almasını çoğu zaman sağlar.
loader = DataLoader(
dataset,
batch_size=32,
shuffle=True,
num_workers=4
)Toplu Gruplar Üzerinde Yineleme
Toplu tensörleri almak için DataLoader üzerinde döngü kurun. Her yineleme, model için hazır olan (images, labels) değerini döndürür; burada images'ın şekli [batch_size, channels, H, W] olur.
for images, labels in loader:
print(images.shape) # torch.Size([32, 3, 224, 224])
breakHızlı Kontrol
Veri işlem hattı bilginizi sınayın.
Özet: Veri Kümeleri ve DataLoader'lar
__len__ ve __getitem__ içeren özel bir Dataset oluşturdunuz, görüntüleri transforms.Compose (Resize, ToTensor, Normalize) kullanarak ön işlediniz ve toplu grupları modelinize verimli biçimde aktarmak için bunu batch_size, shuffle ve num_workers içeren bir DataLoader ile sardınız.
Sıkça Sorulan Sorular
“Özel Veri Kümeleri ve DataLoaders” dersi ücretsiz mi?
Evet — “Özel Veri Kümeleri ve DataLoaders” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“Özel Veri Kümeleri ve DataLoaders” dersinde ne öğreneceğim?
torch.utils.data.Dataset, __len__/__getitem__, DataLoader, dönüşümler, veri artırma. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Özel Veri Kümeleri ve DataLoaders” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- PyTorch Tensörleri ve Autograd
- Özel Veri Kümeleri ve DataLoaders
- PyTorch ile CNN Oluşturma ve Eğitme
- YOLOv8 ile Nesne Tespiti