PyTorch, Python ile makine öğrenmesi ve özellikle derin öğrenme modelleri geliştirmeyi sağlayan açık kaynaklı bir kütüphanedir. Verileri tensör adı verilen çok boyutlu yapılarda işler, GPU’dan yararlanabilir, türevleri otomatik hesaplar ve sinir ağlarının eğitilmesini kolaylaştırır. Kısacası PyTorch ile veriyi modele verip modelin hatasını hesaplayabilir, ağırlıkları güncelleyebilir ve eğitilmiş modeli tahmin için kullanabilirsiniz.
PyTorch’un temel veri yapısı tensördür. Tensör, tek sayıdan çok boyutlu görüntü veya metin verisine kadar farklı türdeki sayısal verileri tutabilir. Örneğin 28×28 piksellik gri tonlamalı bir görüntü, 28 satır ve 28 sütundan oluşan bir tensör olarak temsil edilebilir.
Kütüphane ayrıca bir tensör üzerinde yapılan işlemleri izleyerek türevleri otomatik hesaplayabilir. Bu özellik otomatik türev alma veya
Sinir ağlarının katmanlarını tanımlamak için
Aşağıdaki örnekte önce
Bu kodun beklenen çıktısı şöyledir:
İlk sonuç, 3’ün karesinin 9 olduğunu gösterir. İkinci sonuç ise
Bu örnek tek başına bir yapay zekâ modeli eğitmez; yalnızca PyTorch’un hesaplama grafiği ve otomatik türev mekanizmasının nasıl çalıştığını gösterir.
PyTorch ile tipik bir eğitim sürecinde veriler modele gönderilir, modelin çıktısı beklenen sonuçla karşılaştırılarak kayıp değeri hesaplanır, türevler bulunur ve model ağırlıkları güncellenir. En küçük biçimiyle süreç şu sırayı izler:
PyTorch; görüntü sınıflandırma, nesne algılama, doğal dil işleme, ses analizi, öneri sistemleri ve araştırma amaçlı makine öğrenmesi modellerinde kullanılabilir. Python sözdizimine yakın yapısı ve işlemleri adım adım incelemeye elverişli olması, özellikle modelin çalışma mantığını değiştirmek veya hata ayıklamak isteyen geliştiriciler için yararlıdır.
GPU kullanımı büyük tensör işlemlerini hızlandırabilir; ancak GPU tek başına modeli doğru veya hızlı hâle getirmez. Model mimarisi, veri kalitesi, bellek kapasitesi, toplu iş boyutu ve eğitim ayarları sonucu birlikte etkiler. Küçük örneklerde CPU kullanımı daha basit ve yeterli olabilir.
PyTorch, hazır veriyi kendiliğinden anlamlandırmaz ve eğitilmiş bir model üretmez. Model mimarisini seçmeniz, veriyi hazırlamanız, uygun kayıp fonksiyonunu belirlemeniz, eğitim sürecini izlemeniz ve sonuçları ayrı verilerle değerlendirmeniz gerekir. Ayrıca PyTorch bir veritabanı, web sunucusu veya tek başına son kullanıcı uygulaması değildir; bu sistemlerle birlikte kullanılabilen bir makine öğrenmesi bileşenidir.
Önce tensör oluşturma, tensör boyutları ve temel işlemleri öğrenin. Ardından
PyTorch ne işe yarar?
PyTorch’un temel veri yapısı tensördür. Tensör, tek sayıdan çok boyutlu görüntü veya metin verisine kadar farklı türdeki sayısal verileri tutabilir. Örneğin 28×28 piksellik gri tonlamalı bir görüntü, 28 satır ve 28 sütundan oluşan bir tensör olarak temsil edilebilir.
Kütüphane ayrıca bir tensör üzerinde yapılan işlemleri izleyerek türevleri otomatik hesaplayabilir. Bu özellik otomatik türev alma veya
autograd olarak adlandırılır. Sinir ağı eğitilirken modelin hatasını azaltmak için hangi ağırlığın ne yönde değiştirilmesi gerektiği bu hesaplamalarla bulunur.Sinir ağlarının katmanlarını tanımlamak için
torch.nn, optimizasyon algoritmaları için torch.optim, veri kümelerini düzenlemek ve küçük gruplar hâlinde modele vermek için de torch.utils.data kullanılır.Basit bir tensör ve otomatik türev örneği
Aşağıdaki örnekte önce
x değerinin karesi hesaplanır. requires_grad=True olduğu için PyTorch, bu işlem sırasında x ile ilgili türevi izler.
Python:
import torch
x = torch.tensor(3.0, requires_grad=True)
y = x ** 2
y.backward()
print(y.item())
print(x.grad.item())
Bu kodun beklenen çıktısı şöyledir:
Kod:
9.0
6.0
İlk sonuç, 3’ün karesinin 9 olduğunu gösterir. İkinci sonuç ise
y = x² fonksiyonunun x = 3 noktasındaki türevinin 6 olduğunu gösterir. Burada backward() çağrısı türevi geriye doğru hesaplar ve sonucu x.grad içine yazar.Bu örnek tek başına bir yapay zekâ modeli eğitmez; yalnızca PyTorch’un hesaplama grafiği ve otomatik türev mekanizmasının nasıl çalıştığını gösterir.
Bir model nasıl eğitilir?
PyTorch ile tipik bir eğitim sürecinde veriler modele gönderilir, modelin çıktısı beklenen sonuçla karşılaştırılarak kayıp değeri hesaplanır, türevler bulunur ve model ağırlıkları güncellenir. En küçük biçimiyle süreç şu sırayı izler:
- Modeli tanımlayın. Girdi ve çıktı boyutlarını belirleyerek
torch.nn.Moduletabanlı bir sınıf veya hazır katmanlar oluşturun. - Veriyi tensöre dönüştürün. Girdilerin modelin beklediği biçimde ve sayısal türde olduğundan emin olun.
- İleri geçiş yapın. Veriyi modele vererek tahmini çıktıyı alın.
- Kayıp değerini hesaplayın. Tahmin ile doğru cevap arasındaki farkı uygun bir kayıp fonksiyonuyla ölçün.
- Türevleri hesaplayın. Kayıp üzerinde
backward()çağrısı yaparak model parametrelerinin gradyanlarını oluşturun. - Ağırlıkları güncelleyin. Bir iyileştiriciyle parametreleri güncelleyin ve sonraki turdan önce gradyanları sıfırlayın.
PyTorch hangi durumda tercih edilir?
PyTorch; görüntü sınıflandırma, nesne algılama, doğal dil işleme, ses analizi, öneri sistemleri ve araştırma amaçlı makine öğrenmesi modellerinde kullanılabilir. Python sözdizimine yakın yapısı ve işlemleri adım adım incelemeye elverişli olması, özellikle modelin çalışma mantığını değiştirmek veya hata ayıklamak isteyen geliştiriciler için yararlıdır.
GPU kullanımı büyük tensör işlemlerini hızlandırabilir; ancak GPU tek başına modeli doğru veya hızlı hâle getirmez. Model mimarisi, veri kalitesi, bellek kapasitesi, toplu iş boyutu ve eğitim ayarları sonucu birlikte etkiler. Küçük örneklerde CPU kullanımı daha basit ve yeterli olabilir.
PyTorch, hazır veriyi kendiliğinden anlamlandırmaz ve eğitilmiş bir model üretmez. Model mimarisini seçmeniz, veriyi hazırlamanız, uygun kayıp fonksiyonunu belirlemeniz, eğitim sürecini izlemeniz ve sonuçları ayrı verilerle değerlendirmeniz gerekir. Ayrıca PyTorch bir veritabanı, web sunucusu veya tek başına son kullanıcı uygulaması değildir; bu sistemlerle birlikte kullanılabilen bir makine öğrenmesi bileşenidir.
PyTorch öğrenmeye nereden başlanır?
Önce tensör oluşturma, tensör boyutları ve temel işlemleri öğrenin. Ardından
autograd, nn.Module, kayıp fonksiyonları ve iyileştiricilerle küçük bir sınıflandırma modeli kurun. İlk modelinizde az sayıda veri ve basit bir ağ kullanmanız, bir tahminin nasıl üretildiğini ve ağırlıkların nasıl değiştiğini izlemenizi kolaylaştırır. Model eğitim kaybını azaltıyor ancak doğrulama başarımı düşüyorsa, bu durum genellikle modelin eğitim verisine fazla uyduğunu ve genelleme davranışının ayrıca incelenmesi gerektiğini gösterir.