Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเข้าถึงและแก้ไขค่าของทิลเซอร์ (Tensor Indexing and Slicing) ใน PyTorch

เราใช้ Indexing และ Slicing เพื่อเข้าถึงค่าของทิลเซอร์ Indexing ใช้เข้าถึงองค์ประกอบเดี่ยว ในขณะที่ Slicing ใช้เข้าถึงลำดับขององค์ประกอบ การแก้ไขค่าใช้ตัวดำเนินการกำหนดค่า (assignment operator)

ขั้นตอนการทำงาน

  • นำเข้าไลบรารี torch

  • กำหนดทิลเซอร์ PyTorch

  • เข้าถึงค่าเดี่ยวด้วย indexing หรือลำดับค่าด้วย slicing

  • แก้ไขค่าที่เข้าถึงด้วยตัวดำเนินการกำหนดค่า

  • พิมพ์ทิลเซอร์เพื่อตรวจสอบการเปลี่ยนแปลง

ตัวอย่างที่ 1: เข้าถึงและแก้ไขค่าเดี่ยว (Indexing)

import torch

# กำหนดทิลเซอร์
a = torch.Tensor([[3, 5], [1, 2], [5, 7]])
print("a:\n", a)

# เข้าถึงค่าที่ index [1,0] -> แถวที่ 2 คอลัมน์ที่ 1
b = a[1, 0]
print("a[1,0]:\n", b)

# วิธี indexing อื่น
c = a[1][0]
print("a[1][0]:\n", c)

# แก้ไขค่า 1 ให้เป็น 9
a[1, 0] = 9
print("tensor 'a' after modifying value at a[1,0]:")
print("a:\n", a)

ผลลัพธ์

a: tensor([[3., 5.], [1., 2.], [5., 7.]])
a[1,0]:      tensor(1.)
a[1][0]:      tensor(1.)
tensor 'a' after modifying value at a[1,0]:
a: tensor([[3., 5.], [9., 2.], [5., 7.]])

ตัวอย่างที่ 2: เข้าถึงและแก้ไขหลายค่า (Slicing)

import torch

a = torch.Tensor([[3, 5], [1, 2], [5, 7]])
print("a:\n", a)

# เข้าถึงค่าทั้งหมดของแถวที่ 2
b = a[1]
print("a[1]:\n", a[1])

# เข้าถึงแถวที่ 1 และ 2
b = a[0:2]
print("a[0:2]:\n", a[0:2])

# เข้าถึงคอลัมน์ที่ 2 ทั้งหมด
c = a[:, 1]
print("a[:,1]:\n", a[:, 1])

# เข้าถึงแถวแรก 2 แถว แต่คอลัมน์ที่ 2
print("a[0:2, 1]:\n", a[0:2, 1])

# แก้ไขค่าของแถวที่ 2
a[1] = torch.Tensor([9, 9])
print("After modifying a[1]:\n", a)

# แก้ไขค่าของแถวแรก 2 แถว คอลัมน์ที่ 2
a[0:2, 1] = torch.Tensor([4, 4])
print("After modifying a[0:2, 1]:\n", a)

ผลลัพธ์

a: tensor([[3., 5.], [1., 2.], [5., 7.]])
a[1]:      tensor([1., 2.])
a[0:2]:      tensor([[3., 5.], [1., 2.]])
a[:,1]:      tensor([5., 2., 7.])
a[0:2, 1]:      tensor([5., 2.])
After modifying a[1]:      tensor([[3., 5.], [9., 9.], [5., 7.]])
After modifying a[0:2, 1]: tensor([[3., 4.], [9., 4.], [5., 7.]])