[เรียนรู้อย่างรวดเร็ว] รู้เบื้องต้นเกี่ยวกับ Pytorch ②: เรียนรู้พื้นฐานของ PyTorch โดยใช้การถดถอย MLP

คราวที่แล้ว เราได้รีวิววิธีจัดการกับคบไฟซึ่งเป็นพื้นฐานของ PyTorch ไปแล้ว

ครั้งนี้ฉันต้องการใช้การถดถอยแบบ Multilayer Perceptron (MLP) ใน PyTorch และตรวจสอบแพ็คเกจ PyTorch ที่สำคัญ

การไหลโดยรวม

ขั้นตอนโดยรวมของการนำแบบจำลองไปใช้มีดังนี้ () เป็นแพ็คเกจ PyTorch ที่ใช้ในขณะนั้น

  • สร้างชุดข้อมูลอินพุต, วนซ้ำ (ชุดข้อมูล, ตัวโหลดข้อมูล)
  • คำจำกัดความโครงข่ายประสาทเทียม (nn.Module)
  • คำนวณการสูญเสีย กระจายเกรเดียนต์ไปยังพารามิเตอร์เครือข่าย (nn.Module)
  • อัปเดตน้ำหนักเครือข่าย (เครื่องมือเพิ่มประสิทธิภาพ)

แพ็คเกจ PyTorch หลัก

โดยไม่คำนึงถึง PyTorch กรอบการเรียนรู้เชิงลึกจำนวนมากมีแพ็คเกจที่หลากหลายเพื่อทำให้การใช้งานง่ายขึ้น PyTorch ส่วนใหญ่มีสิ่งต่อไปนี้:

ไฟฉายเทนเซอร์อาร์เรย์หลายมิติ โครงสร้างข้อมูลที่ใช้โดย PyTorch
คบเพลิง.ออโต้กราดใช้การส่งต่อ / การย้อนกลับรองรับการดำเนินการแยกความแตกต่างโดยอัตโนมัติบน Tensors เช่น backpropagation (backward())
torch.utils.dataประกอบด้วยยูทิลิตี้เช่น "ชุดข้อมูล" ที่รวบรวมข้อมูลอินพุตและป้ายกำกับเป็นชุด และ "Dataloader" ที่แยกข้อมูลจากชุดข้อมูลเป็นชุดย่อยและส่งต่อไปยังโมเดล
torch.nn.โมดูลใช้สำหรับสร้างเครือข่ายประสาทรับผิดชอบในการห่อหุ้มพารามิเตอร์ เช่น การบันทึกและโหลดโมเดล และย้ายไปยัง GPU
ไฟฉาย.optimเปิดใช้งานการใช้อัลกอริทึมการปรับพารามิเตอร์ให้เหมาะสม เช่น SDG และ Adam
แพ็คเกจ PyTorch หลัก

การนำแบบจำลองไปใช้

สร้างชุดข้อมูล

ครั้งนี้ เราจะเตรียม sin(5x) บวกกับตัวเลขสุ่มที่มี numpy เป็นข้อมูลฝึกหัดfrom_numpy()แปลง torch.tensor ด้วย

คำจำกัดความของโมเดล

ใน pytorch โมเดลถูกกำหนดเป็น "python class" ที่สืบทอดคลาส nn.Module

คลาส MLP (nn.Module): คลาส MLP ที่กำหนดจะสืบทอดคลาสพาเรนต์ nn.Module
เริ่มต้น def (): รับข้อโต้แย้งและยกตัวอย่าง
สุดยอด (MLP, ตัวเอง). init (): สืบทอดคลาสพาเรนต์ด้วยฟังก์ชันพิเศษ
def ไปข้างหน้า (ตัวเอง, x): หลังจากสร้างอินสแตนซ์แล้ว จะทำงานเมื่อมีการเรียกใช้ฟังก์ชัน การกำหนดฟังก์ชันไปข้างหน้าจะกำหนดฟังก์ชันย้อนกลับโดยอัตโนมัติ (การคำนวณแบบไล่ระดับสี)

.parameters()คุณสามารถรับโครงสร้างเครือข่ายและพารามิเตอร์ด้วย

คำนวณการสูญเสีย การขยายพันธุ์ย้อนหลัง อัพเดตน้ำหนัก

เพื่อทำความเข้าใจลักษณะการทำงานของแต่ละรายการ ให้นำข้อมูลส่วนหนึ่งจาก x ป้อนเข้าไปในโครงข่ายประสาทเทียม และดูว่าพารามิเตอร์เปลี่ยนแปลงอย่างไรเนื่องจากการคำนวณข้อผิดพลาดและการอัปเดตน้ำหนัก

เรียกใช้ลูปการเรียนรู้

ดำเนินการขั้นตอนข้างต้นสำหรับแต่ละชุดเพื่อฝึกโครงข่ายประสาทเทียม
Datasetส่งคืนชุดข้อมูลและป้ายกำกับที่เกี่ยวข้อง และDataLoaderเป็นคลาสที่ส่งคืนข้อมูลเป็นชุดขนาด

การแสดงกราฟการคำนวณ

โครงสร้าง MLP สามชั้นที่สร้างขึ้นในครั้งนี้สามารถมองเห็นได้โดยใช้แพ็คเกจ python ที่เรียกว่า torchvizparameters()โปรดใช้เมื่อเพียงอย่างเดียวไม่เพียงพอ

เราได้เห็น PyTorch และแพ็คเกจหลักของ PyTorch ผ่านการใช้งาน MLP regression