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()ให้ส่ง inputxของโมเดลผ่าน 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