0Pricing
Learn AI with Python · บทเรียน

เทนเซอร์ 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 multiply

requires_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)  # False

detach() เพื่อหยุดการไหลของเกรเดียนต์

.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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. เทนเซอร์ PyTorch และ Autograd
  2. ชุดข้อมูลและ DataLoaders แบบกำหนดเอง
  3. การสร้างและฝึก CNN ด้วย PyTorch
  4. การตรวจจับวัตถุด้วย YOLOv8
← กลับไปที่ Learn AI with Python