ประกอบตัวจำแนกภาพด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอนโวลูชัน: เคอร์เนลเลื่อนไปบนพิกเซล
- สไตรด์ แพดดิง และพูลลิง
- ช่อง แผนที่คุณลักษณะ และขอบเขตรับข้อมูล
- ประกอบตัวจำแนกภาพด้วย CNN