เทนเซอร์ PyTorch และ Autograd
torch.Tensor, requires_grad, backward(), การคำนวณกราดิเอนต์ และการดำเนินการกับเทนเซอร์
เทนเซอร์ PyTorch และ Autograd เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
PyTorch คืออะไร
PyTorch เป็นเฟรมเวิร์กสำหรับการเรียนรู้เชิงลึกที่สร้างขึ้นโดยมี เทนเซอร์ เป็นแกนหลัก ซึ่งเป็นอาร์เรย์หลายมิติที่รองรับการเร่งความเร็วด้วย GPU และการหาอนุพันธ์อัตโนมัติ สิ่งสำคัญสองประการที่ต้องทำความเข้าใจก่อนคือเทนเซอร์และออโตเกรด
pip install torch
import torchการสร้างเทนเซอร์
เทนเซอร์ คล้ายกับอาร์เรย์ของ NumPy แต่สามารถอยู่บน GPU และติดตามเกรเดียนต์ได้ สร้างเทนเซอร์ได้ด้วย torch.tensor เทนเซอร์มี shape และ dtype
x = torch.tensor([1.0, 2.0, 3.0])
print(x.shape) # torch.Size([3])
print(x.dtype) # torch.float32การดำเนินการกับเทนเซอร์
เทนเซอร์รองรับการคำนวณทางคณิตศาสตร์แบบแยกตามสมาชิก การคูณเมทริกซ์ และการปรับรูปร่าง การดำเนินการเหล่านี้ประมวลผลแบบเวกเตอร์และทำงานได้รวดเร็วบนฮาร์ดแวร์ นี่คือพื้นฐานการคำนวณของโครงข่ายประสาทเทียมทุกชนิด
a = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
b = torch.tensor([[5.0, 6.0], [7.0, 8.0]])
print(a + b)
print(a @ b) # matrix multiplyrequires_grad: การติดตามเกรเดียนต์
หากต้องการคำนวณเกรเดียนต์ ให้สร้างเทนเซอร์ด้วย requires_grad=True จากนั้น PyTorch จะบันทึกทุกการดำเนินการที่เกิดขึ้นกับเทนเซอร์นั้น และสร้างกราฟการคำนวณที่สามารถหาอนุพันธ์ได้ในภายหลัง
x = torch.tensor([2.0, 3.0], requires_grad=True)
print(x.requires_grad) # Trueการสร้างการคำนวณ
ใช้การดำเนินการกับเทนเซอร์ที่ติดตามเกรเดียนต์เพื่อสร้างผลลัพธ์สเกลาร์ ในที่นี้ เราจะยกกำลังสองสมาชิกแต่ละตัวแล้วหาผลรวม ทำให้ได้ตัวเลขเดียวที่สามารถหาอนุพันธ์เทียบกับ x ได้
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = x.pow(2).sum() # y = x0^2 + x1^2
print(y) # tensor(13., grad_fn=...)การเรียก backward()
เรียก .backward() บนค่าสเกลาร์เพื่อคำนวณเกรเดียนต์ด้วยการแพร่ย้อนกลับ PyTorch จะเดินย้อนกลับผ่านกราฟที่บันทึกไว้ และเติมค่าอนุพันธ์ให้อัตโนมัติ
y.backward()การอ่าน .grad
หลังจากเรียก backward() เทนเซอร์ขาเข้าแต่ละตัวจะเก็บเกรเดียนต์ไว้ใน .grad สำหรับ y = sum(x^2) อนุพันธ์คือ 2x ดังนั้นเกรเดียนต์จึงเป็น [4, 6]
print(x.grad) # tensor([4., 6.])การสะสมของเกรเดียนต์
ข้อควรระวังเล็กน้อยคือ เกรเดียนต์จะรวมกันเพิ่มขึ้นเมื่อเรียก backward() หลายครั้ง ในวงจรการฝึก คุณต้องล้างค่าเหล่านี้ในแต่ละขั้นด้วย x.grad.zero_() หรือใช้ zero_grad() ของตัวปรับค่า
x.grad.zero_() # reset before the next backward()torch.no_grad() สำหรับการอนุมาน
ระหว่างการอนุมาน คุณไม่จำเป็นต้องใช้เกรเดียนต์ และการติดตามเกรเดียนต์จะสิ้นเปลืองหน่วยความจำ ให้ครอบโค้ดการทำนายด้วย with torch.no_grad(): เพื่อปิดการสร้างกราฟและทำให้ทำงานเร็วขึ้น
with torch.no_grad():
preds = x.pow(2).sum()
print(preds.requires_grad) # Falsedetach() เพื่อหยุดการไหลของเกรเดียนต์
.detach() จะคืนเทนเซอร์ที่ใช้ข้อมูลชุดเดียวกัน แต่ถูกตัดออกจากกราฟการคำนวณ ใช้เมื่อต้องการใช้ค่าโดยไม่ให้เกรเดียนต์ไหลย้อนกลับผ่านค่านั้น เช่น เมื่อต้องการบันทึกข้อมูลหรือตรึงบางส่วนของโครงข่าย
z = x.detach()
print(z.requires_grad) # Falseเหตุใดออโตเกรดจึงสำคัญ
ออโตเกรดทำให้การเรียนรู้เชิงลึกใช้งานได้จริง: คุณกำหนดการคำนวณไปข้างหน้า แล้ว PyTorch จะหาเกรเดียนต์สำหรับการแพร่ย้อนกลับให้อัตโนมัติ วงจรการฝึกทุกวงจรที่คุณเขียนล้วนตั้งอยู่บน requires_grad, backward และ .grad
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับออโตเกรดของคุณ
สรุป: เทนเซอร์และออโตเกรด
คุณสร้างเทนเซอร์ด้วย torch.tensor และเปิดใช้การติดตามเกรเดียนต์ด้วย requires_grad=True จากนั้นคำนวณผลลัพธ์ เรียก .backward() และอ่านค่าอนุพันธ์จาก .grad คุณได้เรียนรู้ว่าเกรเดียนต์จะสะสม ใช้ torch.no_grad() สำหรับการอนุมาน และใช้ .detach() เพื่อตัดการไหลของเกรเดียนต์
คำถามที่พบบ่อย
บทเรียน “เทนเซอร์ PyTorch และ Autograd” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เทนเซอร์ PyTorch และ Autograd” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เทนเซอร์ PyTorch และ Autograd”
torch.Tensor, requires_grad, backward(), การคำนวณกราดิเอนต์ และการดำเนินการกับเทนเซอร์ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “เทนเซอร์ PyTorch และ Autograd” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เทนเซอร์ PyTorch และ Autograd
- ชุดข้อมูลและ DataLoaders แบบกำหนดเอง
- การสร้างและฝึก CNN ด้วย PyTorch
- การตรวจจับวัตถุด้วย YOLOv8