ในบล็อกนี้ จะเน้นไปที่วิธีรับน้ำหนักของเลเยอร์โมเดลใน PyTorch
น้ำหนักของเลเยอร์โมเดลใน PyTorch คืออะไร
“ ตุ้มน้ำหนัก ' และ ' อคติ ” เป็นทั้งคุณสมบัติที่สำคัญของโมเดล Neural Network พารามิเตอร์เหล่านี้เป็นพารามิเตอร์ที่สามารถเรียนรู้ได้ซึ่งได้รับการอัปเดตเป็นประจำระหว่างลูปการฝึกอบรมพร้อมกับการส่งต่อโมเดลแต่ละครั้ง การอัปเดตเป็นประจำนี้เกิดจากการรวมเครื่องมือเพิ่มประสิทธิภาพเช่นเครื่องมือเพิ่มประสิทธิภาพ Adam วัตถุประสงค์ของแบบจำลองโครงข่ายประสาทเทียมคือการคาดการณ์ที่แม่นยำโดยอิงจากข้อมูลอินพุต รวมถึงน้ำหนักและอคติเพื่อปรับผลลัพธ์เหล่านี้เพื่อลดการสูญเสียให้เหลือน้อยที่สุด
จะรับน้ำหนักของเลเยอร์โมเดลใน PyTorch ได้อย่างไร
“ น้ำหนัก ” ของเลเยอร์จะถูกเก็บไว้ในพจนานุกรม Python และใช้ไวยากรณ์ “ state_dict() '. พจนานุกรมใช้ในการเรียกตุ้มน้ำหนักโดยใช้ขั้นตอนด้านล่าง:
ขั้นตอนที่ 1: เปิด Colab IDE
บทช่วยสอนนี้จะเริ่มต้นด้วยการเลือก IDE สำหรับโปรเจ็กต์ ไปที่โคลาบอราทอรี เว็บไซต์ และเริ่ม “ โน๊ตบุ๊คใหม่ ” เพื่อเริ่มทำงาน:
ขั้นตอนที่ 2: ติดตั้งและนำเข้าไลบรารี
หลังจากตั้งค่าสมุดบันทึก Colab แล้ว “ ติดตั้ง ' และ ' นำเข้า ” ไลบรารีที่ครอบคลุมฟังก์ชันที่จำเป็นทั้งหมดในโครงการ:
! pip ติดตั้งไฟฉายนำเข้า คบเพลิง
นำเข้า การมองเห็นคบเพลิง โมเดล
รหัสข้างต้นทำงานดังนี้:
- “ ปิ๊ป ” ตัวติดตั้งแพ็คเกจจาก python ใช้เพื่อติดตั้งสิ่งที่จำเป็น “ คบเพลิง ' ห้องสมุด.
- ต่อไป “ นำเข้า ” คำสั่งใช้เพื่อนำเข้าเข้าสู่โครงการ
- สุดท้ายนี้ “ torchvision.รุ่น ” แพ็คเกจยังถูกนำเข้าสำหรับฟังก์ชันเพิ่มเติมของโมเดลการเรียนรู้เชิงลึก:
ขั้นตอนที่ 3: นำเข้าโมเดล ResNet
ในบทช่วยสอนนี้ “ เรสเน็ต50 ” โมเดลโครงข่ายประสาทเทียมที่มี 50 เลเยอร์ภายในไลบรารี Torchvision ถูกนำมาใช้ในการสาธิต นำเข้าโมเดลที่ได้รับการฝึกล่วงหน้าตามที่แสดง:
ตัวอย่าง_รุ่น = การมองเห็นคบเพลิง โมเดล . จริงจัง50 ( ฝึกอบรมล่วงหน้า = จริง )
ขั้นตอนที่ 4: กำหนด Model Layer
กำหนดชื่อเลเยอร์โมเดลและใช้คำสั่ง “ state_dict() ” วิธีการรับน้ำหนักดังแสดง:
ตัวอย่าง_ชั้น_ชื่อ = 'layer2.0.conv1'ตัวอย่าง_ชั้น_น้ำหนัก = ตัวอย่าง_รุ่น state_dict ( ) [ ตัวอย่าง_ชั้น_ชื่อ + '.น้ำหนัก' ]
พิมพ์ ( 'น้ำหนักของเลเยอร์: \n ' , ตัวอย่าง_ชั้น_น้ำหนัก รูปร่าง )
รหัสข้างต้นทำงานดังนี้:
- เลเยอร์ที่ซับซ้อนที่สองของรุ่น ResNet50 ถูกกำหนดให้กับ “ ตัวอย่าง_ชั้น_ชื่อ ' ตัวแปร.
- จากนั้น “ state_dict() ” วิธีการใช้กับ “ ตัวอย่าง_รุ่น ” ตัวแปรและถูกกำหนดให้กับ “ ตัวอย่าง_ชั้น_น้ำหนัก ' ตัวแปร.
- “ ตัวอย่าง_ชั้น_ชื่อ ' และ ' .น้ำหนัก ” ถูกเพิ่มเป็นข้อโต้แย้งของ “ state_dict() ” วิธีการเพื่อให้ได้น้ำหนัก
- สุดท้ายนี้ ใช้เครื่องหมาย “ พิมพ์() ” วิธีการแสดง Layer Weights เป็นผลลัพธ์:
ผลลัพธ์ด้านล่างนี้แสดงให้เห็นว่าเราได้รับน้ำหนักของเลเยอร์โมเดลใน Pytorch แล้ว:
บันทึก : คุณสามารถเข้าถึง Colab Notebook ของเราได้ที่นี้ ลิงค์ .
โปรทิป
น้ำหนักของเลเยอร์โมเดลภายใน PyTorch แสดงให้เห็นความคืบหน้าของลูปการฝึก น้ำหนักเหล่านี้ใช้เพื่อยืนยันการเติบโตของแบบจำลองในขณะที่ประมวลผลข้อมูลที่ป้อนเข้าเป็นผลลัพธ์และการคาดการณ์ การได้รับน้ำหนักของชั้นเป็นสิ่งสำคัญในการประเมินคุณภาพของผลลัพธ์ และเพื่อตรวจสอบว่าต้องมีการปรับปรุงใดๆ หรือไม่
ความสำเร็จ! เราได้สาธิตวิธีการรับน้ำหนักของเลเยอร์ของโมเดล PyTorch แล้ว
บทสรุป
รับน้ำหนักของเลเยอร์โมเดลใน PyTorch โดยใช้ไฟล์ “state_dict() ” หลังจากนำเข้าโมเดลจาก torchvision หรือใช้แบบกำหนดเอง น้ำหนักของเลเยอร์โมเดลคือพารามิเตอร์ที่สามารถเรียนรู้ได้ซึ่งได้รับการอัปเดตอย่างต่อเนื่องระหว่างการฝึกอบรมและจัดทำรายการความคืบหน้า ในบทความนี้ เราได้แสดงวิธีการนำเข้าโมเดล ResNet50 จาก torchvision และรับน้ำหนักของเลเยอร์ที่ซับซ้อนที่สอง