
PyTorch Nedir? Kurulum ve Kullanım Rehberi
1. PyTorch Nedir?
PyTorch, Facebook’un AI Research Lab (FAIR) ekibi tarafından geliştirilen, açık kaynaklı bir derin öğrenme kütüphanesidir. Python tabanlı olan PyTorch, özellikle bilimsel hesaplama, tensör işlemleri ve GPU hızlandırmalı sinir ağı geliştirme için kullanılır. TensorFlow ile rekabet halinde olan PyTorch, araştırmacılar ve geliştiriciler tarafından sıklıkla tercih edilir.
PyTorch’un Avantajları
✔ Dinamik Hesaplama Grafiği (Dynamic Computation Graph): Model eğitimi sırasında grafik yapısını değiştirebilme esnekliği sunar.
✔ Python Diliyle Uyumlu: NumPy benzeri bir arayüz sunar, öğrenmesi kolaydır.
✔ GPU Desteği: CUDA ile entegre çalışarak hızlandırılmış hesaplama yapabilir.
✔ Geniş Kütüphane Desteği: TorchVision, TorchText ve TorchAudio gibi ek modüllerle genişletilebilir.
✔ Aktif Topluluk ve Dokümantasyon: GitHub, forumlar ve resmi dokümanlarla desteklenir.
2. PyTorch Kurulumu
PyTorch’u kurmak için Python 3.7+ gereklidir. İşte adım adım kurulum rehberi:
Adım 1: Python ve pip’in Güncel Olduğundan Emin Olun
python --version
pip --version
Eğer yoksa, Python’u resmi sitesinden indirin.
Adım 2: PyTorch’u Yükleyin
PyTorch’un resmi sitesi (pytorch.org) üzerinden işletim sisteminize ve donanımınıza uygun kurulum komutunu alabilirsiniz.
CPU Sürümü (GPU olmadan):
pip install torch torchvision torchaudio
NVIDIA GPU Desteği ile (CUDA 11.8):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
MacOS (M1/M2 GPU Desteği ile Metal):
pip install torch torchvision torchaudio
Adım 3: Kurulumu Doğrulayın
Python’da aşağıdaki kodu çalıştırarak test edin:
import torch
print(torch.__version__) # PyTorch sürümünü gösterir
print(torch.cuda.is_available()) # GPU desteğini kontrol eder
3. PyTorch ile İlk Sinir Ağı Modeli (MNIST Örneği)
PyTorch’un temel bileşenlerini anlamak için MNIST el yazısı rakam tanıma modeli oluşturalım.
Adım 1: Gerekli Kütüphaneleri Yükleme
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
Adım 2: Veri Kümesini Yükleme ve Ön İşleme
# Veri dönüşümlerini tanımla
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
# MNIST veri setini indir
train_data = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_data = datasets.MNIST(root='./data', train=False, download=True, transform=transform)
# DataLoader oluştur
train_loader = DataLoader(train_data, batch_size=64, shuffle=True)
test_loader = DataLoader(test_data, batch_size=64, shuffle=False)
Adım 3: Sinir Ağı Modelini Tanımlama
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(28*28, 128) # Giriş katmanı
self.fc2 = nn.Linear(128, 64) # Gizli katman
self.fc3 = nn.Linear(64, 10) # Çıkış katmanı
def forward(self, x):
x = x.view(-1, 28*28) # Veriyi düzleştir
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = torch.log_softmax(self.fc3(x), dim=1)
return x
model = Net()
Adım 4: Optimizasyon ve Kayıp Fonksiyonu
criterion = nn.NLLLoss() # Negatif Log Olasılık Kaybı
optimizer = optim.Adam(model.parameters(), lr=0.001)
Adım 5: Model Eğitimi
epochs = 5
for epoch in range(epochs):
for images, labels in train_loader:
optimizer.zero_grad() # Gradyanları sıfırla
output = model(images) # Tahmin yap
loss = criterion(output, labels) # Kaybı hesapla
loss.backward() # Geri yayılım
optimizer.step() # Ağırlıkları güncelle
print(f"Epoch {epoch+1}/{epochs}, Loss: {loss.item()}")
Adım 6: Model Değerlendirme
correct = 0
total = 0
with torch.no_grad():
for images, labels in test_loader:
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print(f"Test Doğruluğu: {100 * correct / total}%")
4. PyTorch ile Yaygın Kullanım Senaryoları
1. Evrişimli Sinir Ağları (CNN) ile Görüntü Sınıflandırma
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Conv2d(1, 32, 3, 1)
self.conv2 = nn.Conv2d(32, 64, 3, 1)
self.fc1 = nn.Linear(9216, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = torch.relu(self.conv1(x))
x = torch.max_pool2d(x, 2)
x = torch.relu(self.conv2(x))
x = torch.max_pool2d(x, 2)
x = x.view(-1, 9216)
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
2. Tekrarlayan Sinir Ağları (RNN) ile Metin İşleme
class RNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(RNN, self).__init__()
self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x):
out, _ = self.rnn(x)
out = self.fc(out[:, -1, :])
return out
3. Transfer Öğrenme (ResNet18 Kullanımı)
model = torch.hub.load('pytorch/vision', 'resnet18', pretrained=True)
model.fc = nn.Linear(512, 10) # Son katmanı özelleştir
5. PyTorch vs TensorFlow: Hangisini Seçmelisiniz?
Özellik | PyTorch | TensorFlow |
---|---|---|
Hesaplama Grafiği | Dinamik (Eager Execution) | Statik (Graph Mode) / Dinamik |
Kullanım Kolaylığı | Daha Pythonic, kolay debug | Daha karmaşık, TF 2.0 ile iyileşti |
GPU Desteği | Mükemmel CUDA entegrasyonu | TensorFlow GPU sürümü gerekli |
Endüstriyel Kullanım | Araştırma odaklı | Üretimde daha yaygın |
Topluluk | Hızla büyüyor | Çok geniş ve köklü |
6. PyTorch Kullanırken Karşılaşılan Sorunlar ve Çözümleri
Sorun | Çözüm |
---|---|
CUDA Hatası | torch.cuda.is_available() ile GPU desteğini kontrol edin. |
Out of Memory | Batch boyutunu küçültün veya torch.cuda.empty_cache() kullanın. |
Gradyan Patlaması | nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0) kullanın. |
Model Kaydetme/Yükleme | torch.save(model.state_dict(), 'model.pth') ve model.load_state_dict(torch.load('model.pth')) |
7. Sonuç
PyTorch, derin öğrenme ve yapay zeka projelerinde esnekliği ve performansıyla öne çıkan bir kütüphanedir. Bu rehberde PyTorch’un kurulumu, temel kullanımı ve yaygın senaryoları ele alınmıştır.
📌 Özetle:
✔ PyTorch, dinamik hesaplama grafiği sayesinde esnektir.
✔ GPU desteğiyle yüksek performans sunar.
✔ Python ile uyumlu, öğrenmesi kolaydır.
Daha fazla bilgi için:
🔗 PyTorch Resmi Dokümantasyon
🔗 PyTorch Öğreticiler
#PyTorch #DeepLearning #YapayZeka #Python #MachineLearning #AI
Review PyTorch Nedir? Kurulum ve Kullanım Rehberi.