PyTorch ile CNN Oluşturma ve Eğitme
nn.Conv2d, nn.MaxPool2d, nn.Linear, eğitim döngüsü, iyileştirici, kayıp, doğruluk takibi.
PyTorch ile CNN Oluşturma ve Eğitme, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. 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.
Görüntüler için CNN'ler Neden Kullanılır?
Evrişimli Sinir Ağları uzamsal örüntüleri öğrenir: kenarları, dokuları, ardından şekilleri ve nesneleri. Evrişimler görüntü boyunca ağırlıkları paylaşır; bu da CNN'leri verimli ve ötelemeye duyarlı hâle getirir ve onları bilgisayarla görmenin temelini oluşturur.
import torch
import torch.nn as nnnn.Module Temel Sınıfı
Modeller nn.Module sınıfından türetilir. Katmanları __init__ içinde, veri akışını ise forward içinde tanımlarsınız. PyTorch, parametreleri ve gradyanları otomatik olarak izler.
class CNN(nn.Module):
def __init__(self):
super().__init__()Evrişim Katmanları
nn.Conv2d(in_channels, out_channels, kernel_size), özellik haritaları üretmek için öğrenilebilir filtreleri görüntü üzerinde kaydırır. İlk conv 3 kanal (RGB) alır ve farklı özellikleri yakalayan daha fazla kanal üretir.
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1)Havuzlama Katmanları
nn.MaxPool2d, her penceredeki en büyük değeri koruyarak özellik haritalarını alt örnekler. Bu, uzamsal boyutu küçültür, hesaplama miktarını azaltır ve ötelemeye karşı bir miktar değişmezlik sağlar.
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)Tam Bağlantılı Katmanlar
Evrişimlerden sonra özellikleri düzleştirin ve sınıf skorları üretmek için bunları nn.Linear katmanlarından geçirin. Son Linear, her sınıf için bir değer üretir.
self.fc1 = nn.Linear(32 * 8 * 8, 128)
self.fc2 = nn.Linear(128, 10) # 10 classesforward Yöntemi
forward yöntemi, verilerin nasıl aktığını tanımlar: evrişimden ReLU'ya, oradan havuzlamaya geçilir; bu işlem tekrarlanır, ardından veriler düzleştirilip doğrusal katmanlara aktarılır. F.relu, ağın karmaşık örüntüleri öğrenmesini sağlayan doğrusal olmayanlığı ekler.
import torch.nn.functional as F
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(x.size(0), -1) # flatten
x = F.relu(self.fc1(x))
return self.fc2(x)Kayıp ve Optimizasyon Aracı
Sınıflandırma için CrossEntropyLoss kullanın. Adam gibi bir optimizasyon aracı, ağırlıkları gradyanları kullanarak günceller. Model parametrelerini ve bir öğrenme oranını aktarın.
model = CNN()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)Eğitim Döngüsü: Gradyanları Sıfırlama
Her adım, eski gradyanları optimizer.zero_grad() ile temizleyerek başlar. Bunu atlarsanız gradyanlar toplu gruplar boyunca birikir ve güncellemeleriniz bozulur.
for images, labels in loader:
optimizer.zero_grad()İleri Geçiş ve Kayıp
Tahminleri elde etmek için toplu grubu modelden geçirin, ardından tahminleri gerçek etiketlerle karşılaştırarak kaybı hesaplayın. Kayıp, modelin ne kadar hatalı olduğunu ölçen tek bir sayıdır.
outputs = model(images)
loss = criterion(outputs, labels)backward ve step
loss.backward(), otomatik türev yoluyla gradyanları hesaplar; optimizer.step() ise kaybı azaltmak için ağırlıkları küçük miktarlarda günceller. Birlikte tek bir öğrenme adımı oluştururlar.
loss.backward()
optimizer.step()Doğruluğu İzleme
Doğru tahminleri sayarak ilerlemeyi izleyin. Tahmin edilen sınıfları elde etmek için çıktıların argmax değerini alın, bunu etiketlerle karşılaştırın ve doğru tahmin sayısını toplam sayıya bölün.
preds = outputs.argmax(dim=1)
correct = (preds == labels).sum().item()
acc = correct / labels.size(0)
print("batch acc:", acc)Hızlı Kontrol
Eğitim döngüsü bilginizi sınayın.
Özet: CNN'ler Oluşturma ve Eğitme
nn.Conv2d, nn.MaxPool2d ve nn.Linear katmanları ile bir forward yöntemi kullanarak nn.Module sınıfından türeyen bir CNN oluşturdunuz. Bunu şu döngüyle eğittiniz: zero_grad, ileri geçiş, loss.backward(), optimizer.step(); doğruluğu da argmax aracılığıyla izlediniz.
Sıkça Sorulan Sorular
“PyTorch ile CNN Oluşturma ve Eğitme” dersi ücretsiz mi?
Evet — “PyTorch ile CNN Oluşturma ve Eğitme” 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.
“PyTorch ile CNN Oluşturma ve Eğitme” dersinde ne öğreneceğim?
nn.Conv2d, nn.MaxPool2d, nn.Linear, eğitim döngüsü, iyileştirici, kayıp, doğruluk takibi. 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 3. dersidir.
“PyTorch ile CNN Oluşturma ve Eğitme” 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