เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

PyTorch Model

เราจะใช้แนวทาง OOP ในการกำหนดสถาปัตยกรรมของโมเดล โดยต้องสร้าง class ของโมเดลและกำหนด method สองตัวภายในนั้น:

  • .__init__() สำหรับกำหนด layer ที่ต้องการใช้

  • forward() สำหรับกำหนดว่า input จะถูกประมวลผลอย่างไร นี่คือที่ที่ส่ง input ผ่าน layer ต่างๆ ที่กำหนดไว้

มาสร้างโมเดลที่มี linear layer สามชั้นพร้อม ReLU activation กัน หลังจาก linear layer ชั้นสุดท้าย จะใช้ sigmoid activation แทน ซึ่งเหมาะสำหรับงาน binary classification เช่น ปัญหาการทำนายความสะอาดของน้ำของเรา นี่คือโมเดลที่กำหนดด้วย nn.Sequential() ซึ่งอาจคุ้นเคยกันดีอยู่แล้ว:

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

มาเขียนโมเดลนี้ใหม่ในรูปแบบ class กัน!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Learning ระดับกลางด้วย PyTorch

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใน method .__init__() ให้กำหนด linear layer ทั้งสามชั้นโดยใช้ขนาดที่สอดคล้องกับนิยามโมเดลที่ให้ไว้ แล้วกำหนดให้กับ self.fc1, self.fc2 และ self.fc3 ตามลำดับ
  • ใน method forward() ให้ส่ง input x ของโมเดลผ่าน layer ทั้งหมด อย่าลืมเพิ่ม activation function ต่อจากแต่ละ layer เช่นเดียวกับที่ทำสำหรับ layer แรกไว้แล้ว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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
แก้ไขและรันโค้ด