Model PyTorch
Anda akan menggunakan pendekatan OOP untuk mendefinisikan arsitektur model. Ingat bahwa ini memerlukan pembuatan kelas model dan mendefinisikan dua metode di dalamnya:
.__init__(), tempat Anda mendefinisikan lapisan-lapisan yang akan digunakan;forward(), tempat Anda mendefinisikan apa yang terjadi pada masukan model saat diterima; di sinilah Anda meneruskan masukan melalui lapisan-lapisan yang telah didefinisikan sebelumnya.
Mari membangun model dengan tiga lapisan linear dan aktivasi ReLU. Setelah lapisan linear terakhir, Anda memerlukan aktivasi sigmoid, yang cocok untuk tugas klasifikasi biner seperti masalah prediksi kelayakan air kita. Berikut adalah model yang didefinisikan menggunakan nn.Sequential(), yang mungkin lebih Anda kenal:
net = nn.Sequential(
nn.Linear(9, 16),
nn.ReLU(),
nn.Linear(16, 8),
nn.ReLU(),
nn.Linear(8, 1),
nn.Sigmoid(),
)
Mari kita tulis ulang model ini sebagai sebuah kelas!
Latihan ini adalah bagian dari kursus
Deep Learning Lanjutan dengan PyTorch
Petunjuk latihan
- Dalam metode
.__init__(), definisikan tiga lapisan linear dengan dimensi yang sesuai dengan definisi model yang diberikan dan tetapkan masing-masing keself.fc1,self.fc2, danself.fc3. - Dalam metode
forward(), teruskan masukan modelxmelalui semua lapisan, dengan mengingat untuk menambahkan fungsi aktivasi di atasnya, serupa dengan yang sudah dilakukan pada lapisan pertama.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super().__init__()
# Define the three linear layers
self.fc1 = ____
self.fc2 = ____
self.fc3 = ____
def forward(self, x):
# Pass x through linear layers adding activations
x = nn.functional.relu(self.fc1(x))
x = ____
x = ____
return x