PyTorch dan pemrograman berorientasi objek

Deep Learning Lanjutan dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Apa yang akan dipelajari

Cara melatih model deep learning yang andal:

  • Meningkatkan pelatihan dengan optimizer
  • Mengurangi vanishing dan exploding gradients
  • Convolutional Neural Networks (CNN)
  • Recurrent Neural Networks (RNN)
  • Model multi-input dan multi-output

 

 

Logo PyTorch

Deep Learning Lanjutan dengan PyTorch

Prasyarat

Kursus ini mengasumsikan Anda sudah memahami topik berikut:

  • Pelatihan jaringan saraf:

    • Forward pass
    • Perhitungan loss
    • Backward pass (backpropagation)
  • Melatih model dengan PyTorch:

    • Dataset dan DataLoader
    • Loop pelatihan model
    • Evaluasi model
  • Kursus prasyarat: Introduction to Deep Learning with PyTorch

Deep Learning Lanjutan dengan PyTorch

Pemrograman Berorientasi Objek (OOP)

  • Kita akan memakai OOP untuk mendefinisikan:

    • PyTorch Dataset
    • PyTorch Model
  • Dalam OOP, kita membuat objek dengan:

    • Kemampuan (method)
    • Data (atribut)
Deep Learning Lanjutan dengan PyTorch

Pemrograman Berorientasi Objek (OOP)

class BankAccount:
    def __init__(self, balance):
        self.balance = balance
  • __init__ dipanggil saat objek BankAccount dibuat
  • balance adalah atribut dari objek BankAccount
account = BankAccount(100)
print(account.balance)
100
Deep Learning Lanjutan dengan PyTorch

Pemrograman Berorientasi Objek (OOP)

  • Method: fungsi Python untuk menjalankan tugas
  • Method deposit menambah saldo
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
Deep Learning Lanjutan dengan PyTorch

Dataset potabilitas air

Pandas DataFrame menampilkan beberapa baris awal dan akhir dari data potabilitas air.

Deep Learning Lanjutan dengan PyTorch

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: memuat data, simpan sebagai array numpy
    • super().__init__() memastikan WaterDataset berperilaku seperti Dataset torch
  • len: mengembalikan ukuran dataset
  • getitem:
    • menerima satu argumen idx
    • mengembalikan fitur dan label untuk satu sampel pada indeks idx
Deep Learning Lanjutan dengan PyTorch

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.])
Deep Learning Lanjutan dengan PyTorch

Model PyTorch

Definisi model sequential:

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

Definisi model berbasis kelas:

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()
Deep Learning Lanjutan dengan PyTorch

Ayo berlatih!

Deep Learning Lanjutan dengan PyTorch

Preparing Video For Download...