Deep Learning Academy · บทเรียน

สืบทอดจาก nn.Module: __init__ และ forward

โครงร่างโมเดล PyTorch มาตรฐาน

บทเรียน 1 จาก 413 ขั้นตอน

สืบทอดจาก nn.Module: __init__ และ forward เป็นบทเรียน Deep Learning Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Deep Learning Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน

โมเดลก็คือคลาส

ใน PyTorch โมเดลทุกตัวคือคลาส Python คุณสร้างโมเดลของตนเองโดยสืบทอดจาก nn.Module ซึ่งเป็นคลาสพื้นฐานที่ขับเคลื่อนเครือข่ายทั้งหมด

สองเมธอดเป็นตัวขับเคลื่อนหลัก

โมเดลต้องการเพียงสองเมธอดเพื่อทำงาน: __init__ ใช้เตรียมเลเยอร์ และ forward ใช้อธิบายว่าข้อมูลไหลผ่านเลเยอร์เหล่านั้นอย่างไร

เรียก super().__init__ เสมอ

บรรทัดแรกสุดภายใน __init__ ต้องเรียก super().__init__() การทำเช่นนี้จะเชื่อมโมเดลของคุณเข้ากับ PyTorch และทำให้ PyTorch ติดตามทุกอย่างได้ 🔌

class Net(nn.Module):
    def __init__(self):
        super().__init__()

กำหนดเลเยอร์ใน __init__

ภายใน __init__ ให้สร้างเลเยอร์และจัดเก็บไว้เป็นแอตทริบิวต์ การบันทึกเลเยอร์ไว้บน self จะทำให้ PyTorch ลงทะเบียนเลเยอร์เหล่านั้นโดยอัตโนมัติ

self.fc1 = nn.Linear(4, 8)
self.fc2 = nn.Linear(8, 2)

forward คือสูตร

เมธอด forward รับ tensor อินพุตและส่งคืนเอาต์พุต เมธอดนี้ระบุลำดับที่แน่นอนว่าเลเยอร์ของคุณจะประมวลผลข้อมูลอย่างไร

def forward(self, x):
    x = self.fc1(x)
    return self.fc2(x)

อย่าเรียก forward โดยตรง

ให้เรียกโมเดลเหมือนฟังก์ชัน ไม่ใช่ model.forward(x) การใช้ model(x) จะเรียกใช้ hooks และการจัดการเบื้องหลังที่ forward เพียงอย่างเดียวข้ามไป

out = model(x)   # preferred
# not: out = model.forward(x)

เลเยอร์กลายเป็นพารามิเตอร์

เนื่องจากเลเยอร์อยู่บน self weight ของเลเยอร์จึงถูกรวบรวมเป็น พารามิเตอร์ของโมเดล และ Optimizer จะอัปเดตสิ่งเหล่านี้โดยเฉพาะ

สร้างอินสแตนซ์แล้วใช้งาน

สร้างโมเดลหนึ่งครั้ง แล้วป้อน tensor ให้โมเดลได้หลายครั้ง ทุกการเรียกจะไหลผ่าน weight ที่เรียนรู้ชุดเดิม

model = Net()
prediction = model(sample_input)

ขนาดต้องสอดคล้องกัน

ขนาดเอาต์พุตของแต่ละเลเยอร์ต้องตรงกับขนาดอินพุตของเลเยอร์ถัดไป วางแผน มิติเหล่านี้ขณะที่ข้อมูลไหลผ่าน forward

เหตุใดรูปแบบนี้จึงได้ผล

การสืบทอดคลาสช่วยแยกการตั้งค่าออกจากการไหลของข้อมูลได้อย่างเป็นระเบียบ โครงร่างที่เรียบง่ายแบบเดียวกันนี้ขยายจากเครือข่ายขนาดเล็กไปสู่เครือข่ายขนาดใหญ่ได้

ยืดหยุ่นโดยการออกแบบ

ภายใน forward คุณสามารถแยกแขนง ปรับรูปร่างใหม่ หรือใช้เลเยอร์ซ้ำได้อย่างอิสระ นี่คือเหตุผลที่คลาส nn.Module แบบกำหนดเองทรงพลังมาก 💪

ตรวจสอบอย่างรวดเร็ว

ลองคิดดูว่าเมธอดใดเป็นตัวกำหนดว่าข้อมูลจะเคลื่อนผ่านเครือข่ายอย่างไร

สรุป

คุณสร้างโมเดลโดยสืบทอดจาก nn.Module กำหนดเลเยอร์ใน __init__ และกำหนดการไหลของข้อมูลใน forward จากนั้นเพียงเรียก model(x) 🎯

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “สืบทอดจาก nn.Module: __init__ และ forward” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สืบทอดจาก nn.Module: __init__ และ forward” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Deep Learning Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สืบทอดจาก nn.Module: __init__ และ forward”

โครงร่างโมเดล PyTorch มาตรฐาน คุณปฏิบัติ Deep Learning Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Deep Learning Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Deep Learning Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “สืบทอดจาก nn.Module: __init__ และ forward” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Deep Learning Academy นี้ได้ไหม

ได้ บทเรียน Deep Learning Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สืบทอดจาก nn.Module: __init__ และ forward
  2. วางชั้นเชิงเส้นซ้อนกัน
  3. nn.Sequential สำหรับโมเดลอย่างรวดเร็ว
  4. ตรวจสอบพารามิเตอร์และรูปร่างของชั้น
← กลับไปที่ Deep Learning Academy