PyTorch Nedir? Kurulum ve Kullanım Rehberi

 

PyTorch Nedir? Kurulum ve Kullanım Rehberi
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

bash
Copy
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):

bash
Copy
pip install torch torchvision torchaudio

NVIDIA GPU Desteği ile (CUDA 11.8):

bash
Copy
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

MacOS (M1/M2 GPU Desteği ile Metal):

bash
Copy
pip install torch torchvision torchaudio

Adım 3: Kurulumu Doğrulayın

Python’da aşağıdaki kodu çalıştırarak test edin:

python
Copy
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

python
Copy
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

python
Copy
# 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

python
Copy
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

python
Copy
criterion = nn.NLLLoss()  # Negatif Log Olasılık Kaybı
optimizer = optim.Adam(model.parameters(), lr=0.001)

Adım 5: Model Eğitimi

python
Copy
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

python
Copy
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

python
Copy
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

python
Copy
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ı)

python
Copy
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.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir