PyTorch ve nesne yönelimli programlama

PyTorch ile Orta Düzey Deep Learning

Michal Oleszak

Machine Learning Engineer

Neler öğreneceğiz

Dayanıklı derin öğrenme modelleri nasıl eğitilir:

  • Optimize edicilerle eğitimi iyileştirme
  • Sönen ve patlayan gradyanları azaltma
  • Evrişimsel Sinir Ağları (CNN)
  • Tekrarlayan Sinir Ağları (RNN)
  • Çok girişli ve çok çıkışlı modeller

 

 

PyTorch logosu

PyTorch ile Orta Düzey Deep Learning

Önkoşullar

Kurs, aşağıdaki konulara hâkim olduğunuzu varsayar:

  • Sinir ağları eğitimi:

    • İleri geçiş
    • Kayıp hesaplama
    • Geri geçiş (geri yayılım)
  • PyTorch ile model eğitimi:

    • Dataset ve DataLoader'lar
    • Model eğitim döngüsü
    • Model değerlendirme
  • Önkoşul kurs: Introduction to Deep Learning with PyTorch

PyTorch ile Orta Düzey Deep Learning

Nesne Yönelimli Programlama (OOP)

  • OOP'yi şunları tanımlamak için kullanacağız:

    • PyTorch Dataset'leri
    • PyTorch Modelleri
  • OOP'de nesneleri şu bileşenlerle oluştururuz:

    • Yetenekler (yöntemler)
    • Veri (öznitelikler)
PyTorch ile Orta Düzey Deep Learning

Nesne Yönelimli Programlama (OOP)

class BankAccount:
    def __init__(self, balance):
        self.balance = balance
  • __init__, BankAccount nesnesi oluşturulurken çağrılır
  • balance, BankAccount nesnesinin özniteliğidir
account = BankAccount(100)
print(account.balance)
100
PyTorch ile Orta Düzey Deep Learning

Nesne Yönelimli Programlama (OOP)

  • Yöntemler: Görevleri yapan Python fonksiyonları
  • deposit yöntemi bakiyeyi artırır
class BankAccount:
    def __init__(self, balance):
        self.balance = balance


def deposit(self, amount): self.balance += amount
account = BankAccount(100)
account.deposit(50)
print(account.balance)
150
PyTorch ile Orta Düzey Deep Learning

Su içilebilirliği veri seti

Su içilebilirliği verisinin ilk ve son birkaç satırını gösteren bir Pandas DataFrame.

PyTorch ile Orta Düzey Deep Learning

PyTorch Dataset

from torch.utils.data import Dataset

class WaterDataset(Dataset):

def __init__(self, csv_path): super().__init__() df = pd.read_csv(csv_path) self.data = df.to_numpy()
def __len__(self): return self.data.shape[0]
def __getitem__(self, idx): features = self.data[idx, :-1] label = self.data[idx, -1] return features, label
  • init: veriyi yükler, numpy dizisi olarak saklar
    • super().__init__() WaterDatasetin torch Dataset gibi davranmasını sağlar
  • len: veri seti boyutunu döndürür
  • getitem:
    • idx adlı bir argüman alır
    • idx indeksindeki tek örnek için özellikler ve etiketi döndürür
PyTorch ile Orta Düzey Deep Learning

PyTorch DataLoader

dataset_train = WaterDataset(
    "water_train.csv"
)
from torch.utils.data import DataLoader

dataloader_train = DataLoader(
    dataset_train,
    batch_size=2,
    shuffle=True,
)
features, labels = next(iter(dataloader_train))
print(f"Features: {features},\nLabels: {labels}")
Features: tensor([
  [0.4899, 0.4180, 0.6299, 0.3496, 0.4575,
   0.3615, 0.3259, 0.5011, 0.7545],
  [0.7953, 0.6305, 0.4480, 0.6549, 0.7813,
   0.6566, 0.6340, 0.5493, 0.5789]
]),
Labels: tensor([1., 0.])
PyTorch ile Orta Düzey Deep Learning

PyTorch Modeli

Sıralı model tanımı:

net = nn.Sequential(
  nn.Linear(9, 16),
  nn.ReLU(),
  nn.Linear(16, 8),
  nn.ReLU(),
  nn.Linear(8, 1),
  nn.Sigmoid(),
)

Sınıf tabanlı model tanımı:

class Net(nn.Module):

def __init__(self): super().__init__() self.fc1 = nn.Linear(9, 16) self.fc2 = nn.Linear(16, 8) self.fc3 = nn.Linear(8, 1)
def forward(self, x): x = nn.functional.relu(self.fc1(x)) x = nn.functional.relu(self.fc2(x)) x = nn.functional.sigmoid(self.fc3(x)) return x net = Net()
PyTorch ile Orta Düzey Deep Learning

Ayo berlatih!

PyTorch ile Orta Düzey Deep Learning

Preparing Video For Download...