0Pricing
Deep Learning Academy · บทเรียน

ประกอบตัวจำแนกภาพด้วย CNN

นำบล็อก Conv-ReLU-pool มาประกอบเป็นโมเดลที่ใช้งานได้

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

สูตรของ CNN

ตัวจำแนกภาพแบบคลาสสิกจะซ้อนบล็อก คอนโวลูชัน-ReLU-พูล เพื่อดึงคุณลักษณะ จากนั้นจบด้วยเลเยอร์หนาแน่นที่ทำนายคลาส

องค์ประกอบพื้นฐานหนึ่งชุด

แต่ละบล็อกมีจังหวะเหมือนกัน: เลเยอร์คอนโวลูชัน ตามด้วยการกระตุ้น ReLU แล้วจึงเป็นการพูล นี่คือ บล็อกคอนโวลูชันพื้นฐานที่นำมาใช้ซ้ำ

block = nn.Sequential(
    nn.Conv2d(3, 16, 3, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(2),
)

ReLU เพิ่มความไม่เป็นเชิงเส้น

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

ซ้อนบล็อกเพื่อให้ลึกขึ้น

ทำซ้ำบล็อกเดิม โดยเพิ่ม ช่องสัญญาณในแต่ละครั้ง เมื่อมีบล็อกมากขึ้น receptive field จะกว้างขึ้น และคุณลักษณะที่เรียนรู้จะละเอียดขึ้น

แปลงเป็นเวกเตอร์ก่อนเข้าส่วนหัว

หลังผ่านบล็อกคอนโวลูชัน คุณจะมีแผนผังขนาดเล็กหลายแผนผัง ให้ใช้ Flatten แปลงแผนผังเหล่านั้นเป็นเวกเตอร์เดียว เพื่อให้เลเยอร์หนาแน่นอ่านได้

x = torch.flatten(x, start_dim=1)

ส่วนหัวของตัวจำแนก

เลเยอร์ Linear จะแปลงคุณลักษณะที่ถูกแปลงเป็นเวกเตอร์แล้วให้เป็นคะแนนหนึ่งค่าต่อหนึ่งคลาส หากมีสิบคลาส ผลลัพธ์จะมีตัวเลขสิบค่า

head = nn.Linear(64, 10)

กำหนดโมเดล

ห่อส่วนคุณลักษณะและส่วนหัวไว้ใน โมดูลโครงข่าย เมธอด forward จะเรียกใช้คอนโวลูชัน แปลงข้อมูลเป็นเวกเตอร์ แล้วจึงเรียกใช้ตัวจำแนก

class CNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.features = block
        self.head = head

เขียนการส่งข้อมูลไปข้างหน้า

ใน forward ให้ส่งภาพผ่าน features แปลงเป็นเวกเตอร์ แล้วป้อนเข้าส่วนหัว ผลลัพธ์คือคะแนนดิบหนึ่งค่าต่อหนึ่งคลาส

def forward(self, x):
    x = self.features(x)
    x = torch.flatten(x, 1)
    return self.head(x)

ผลลัพธ์คือ Logit

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

เลือกฟังก์ชันสูญเสีย

สำหรับภาพที่มีหลายคลาส ให้ใช้ CrossEntropyLoss ฟังก์ชันนี้จะใช้ซอฟต์แมกซ์ภายใน และเปรียบเทียบกับดัชนีป้ายกำกับจริง

loss_fn = nn.CrossEntropyLoss()

ทำนายคลาส

ระหว่างการอนุมาน ให้เลือกดัชนีของลอจิตที่มีค่ามากที่สุด argmax นั้นคือคลาสที่โมเดลทำนายให้ภาพ 🖼️

pred = logits.argmax(dim=1)

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

มาทบทวนลำดับขององค์ประกอบต่าง ๆ ในตัวจำแนก CNN กัน

สรุป: CNN ที่ใช้งานได้

คุณประกอบ CNN สำเร็จแล้ว: บล็อก คอนโวลูชัน-ReLU-พูล ดึงคุณลักษณะ การแปลงเป็นเวกเตอร์จะป้อนข้อมูลเข้าส่วนหัว Linear และการใช้ argmax กับลอจิตจะให้คลาสที่ทำนาย 🎉

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

บทเรียน “ประกอบตัวจำแนกภาพด้วย CNN” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ประกอบตัวจำแนกภาพด้วย CNN”

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

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

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

บทเรียน “ประกอบตัวจำแนกภาพด้วย CNN” ใช้เวลานานแค่ไหน

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

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

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

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

  1. คอนโวลูชัน: เคอร์เนลเลื่อนไปบนพิกเซล
  2. สไตรด์ แพดดิง และพูลลิง
  3. ช่อง แผนที่คุณลักษณะ และขอบเขตรับข้อมูล
  4. ประกอบตัวจำแนกภาพด้วย CNN
← กลับไปที่ Deep Learning Academy