MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Dalam metode .__init__(), definisikan tiga lapisan linear dengan dimensi yang sesuai dengan definisi model yang diberikan dan tetapkan masing-masing ke self.fc1, self.fc2, dan self.fc3.
  • Dalam metode forward(), teruskan masukan model x melalui 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
Edit dan Jalankan Kode