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

การกำหนดค่าเริ่มต้นและฟังก์ชัน Activation

ปัญหา Unstable Gradient (ทั้งแบบ Vanishing และ Exploding) เป็นความท้าทายที่พบบ่อยในการเทรน Neural Network เชิงลึก ในแบบฝึกหัดนี้และแบบฝึกหัดถัดไป จะได้ขยายสถาปัตยกรรมโมเดลที่สร้างไว้สำหรับงานจำแนกประเภทความสะอาดของน้ำ เพื่อให้รับมือกับปัญหาดังกล่าวได้ดียิ่งขึ้น

ในขั้นแรก จะปรับปรุงการกำหนดค่าเริ่มต้นของน้ำหนักโดยใช้กลยุทธ์ He (Kaiming) Initialization โดยต้องเรียกใช้ Initializer ที่เหมาะสมจากโมดูล torch.nn.init ซึ่ง import มาให้แล้วในชื่อ init จากนั้นจะอัปเดตฟังก์ชัน Activation จาก ReLU ค่าเริ่มต้นไปเป็น ELU ที่มักให้ผลลัพธ์ที่ดีกว่า

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

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

ดูคอร์ส

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

  • เรียกใช้ He (Kaiming) Initializer กับแอตทริบิวต์ weight ของเลเยอร์ที่สอง fc2 ในลักษณะเดียวกับที่ทำกับ fc1
  • เรียกใช้ He (Kaiming) Initializer กับแอตทริบิวต์ weight ของเลเยอร์ที่สาม fc3 โดยคำนึงถึงฟังก์ชัน Activation ที่แตกต่างกันในเลเยอร์สุดท้าย
  • อัปเดตฟังก์ชัน Activation ในเมธอด forward() จาก relu เป็น elu

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

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

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(9, 16)
        self.fc2 = nn.Linear(16, 8)
        self.fc3 = nn.Linear(8, 1)
        
        # Apply He initialization
        init.kaiming_uniform_(self.fc1.weight)
        ____(____)
        ____(____, ____)

    def forward(self, x):
        # Update ReLU activation to ELU
        x = nn.functional.relu(self.fc1(x))
        x = nn.functional.relu(self.fc2(x))
        x = nn.functional.sigmoid(self.fc3(x))
        return x
แก้ไขและรันโค้ด