Optimizer, pelatihan, dan evaluasi

Deep Learning Lanjutan dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Training loop

import torch.nn as nn
import torch.optim as optim

criterion = nn.BCELoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)


for epoch in range(1000): for features, labels in dataloader_train:
optimizer.zero_grad()
outputs = net(features)
loss = criterion( outputs, labels.view(-1, 1) )
loss.backward()
optimizer.step()
  • Tentukan loss function dan optimizer
    • BCELoss untuk klasifikasi biner
    • Optimizer SGD
  • Iterasi atas epoch dan batch pelatihan
  • Hapus gradien
  • Forward pass: dapatkan output model
  • Hitung loss
  • Hitung gradien
  • Langkah optimizer: perbarui parameter
Deep Learning Lanjutan dengan PyTorch

Cara kerja optimizer

 

Dua vektor berdimensi dua: satu berisi nilai parameter (1 dan 0,5), satu lagi berisi gradien (0,9 dan -0,2).

Deep Learning Lanjutan dengan PyTorch

Cara kerja optimizer

 

Panah menunjukkan bagaimana dua vektor parameter dan gradien dimasukkan ke optimizer, digambar seperti papan target.

Deep Learning Lanjutan dengan PyTorch

Cara kerja optimizer

 

Sebuah panah dari optimizer mengarah ke vektor dengan dua pembaruan parameter: -0,5 dan 0,5.

Deep Learning Lanjutan dengan PyTorch

Cara kerja optimizer

 

Panah dari pembaruan parameter mengarah ke nilai parameter terbaru: 0,5 dan 1,0

Deep Learning Lanjutan dengan PyTorch

Cara kerja optimizer

 

Panah dari pembaruan parameter mengarah ke nilai parameter terbaru: 0,5 dan 1,0

Deep Learning Lanjutan dengan PyTorch

Stochastic Gradient Descent (SGD)

optimizer = optim.SGD(net.parameters(), lr=0.01)
  • Pembaruan bergantung pada learning rate
  • Sederhana dan efisien, untuk model dasar
  • Jarang dipakai dalam praktik
Deep Learning Lanjutan dengan PyTorch

Adaptive Gradient (Adagrad)

optimizer = optim.Adagrad(net.parameters(), lr=0.01)
  • Menyesuaikan learning rate per parameter
  • Baik untuk data jarang (sparse)
  • Dapat menurunkan learning rate terlalu cepat
Deep Learning Lanjutan dengan PyTorch

Root Mean Square Propagation (RMSprop)

optimizer = optim.RMSprop(net.parameters(), lr=0.01)
  • Pembaruan tiap parameter berdasarkan besar gradien sebelumnya
Deep Learning Lanjutan dengan PyTorch

Adaptive Moment Estimation (Adam)

optimizer = optim.Adam(net.parameters(), lr=0.01)
  • Paling serbaguna dan banyak digunakan
  • RMSprop + momentum gradien
  • Sering jadi pilihan utama
Deep Learning Lanjutan dengan PyTorch

Evaluasi model

from torchmetrics import Accuracy

acc = Accuracy(task="binary")


net.eval() with torch.no_grad(): for features, labels in dataloader_test:
outputs = net(features)
preds = (outputs >= 0.5).float()
acc(preds, labels.view(-1, 1))
accuracy = acc.compute() print(f"Accuracy: {accuracy}")
Accuracy: 0.6759443283081055
  • Siapkan metrik akurasi
  • Mode evaluasi, iterasi batch data uji tanpa gradien
  • Masukkan data ke model untuk probabilitas prediksi
  • Hitung label prediksi
  • Perbarui metrik akurasi
Deep Learning Lanjutan dengan PyTorch

Ayo berlatih!

Deep Learning Lanjutan dengan PyTorch

Preparing Video For Download...