Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách truy cập và sửa đổi giá trị tensor trong PyTorch

Dùng Indexing (chỉ mục) để truy cập một phần tử đơn lẻ, Slicing (cắt lát) để truy cập dãy phần tử. Dùng toán tử gán để sửa đổi giá trị.

Các bước

  • Nhập torch.

  • Định nghĩa tensor.

  • Truy cập giá trị bằng indexing hoặc slicing.

  • Sửa đổi bằng toán tử gán.

  • In tensor để kiểm tra.

Ví dụ 1: Truy cập và sửa một phần tử

import torch

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

# Truy cập phần tử hàng 2, cột 1 (index [1,0])
b = a[1, 0]
print("a[1,0]:\n", b)

# Cách khác
c = a[1][0]
print("a[1][0]:\n", c)

# Sửa giá trị 1 thành 9
a[1, 0] = 9
print("Tensor 'a' sau sửa a[1,0]:")
print("a:\n", a)

Kết quả

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.]])

Ví dụ 2: Slicing và sửa nhiều phần tử

import torch

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

# Truy cập toàn bộ hàng 2
b = a[1]
print("a[1]:\n", a[1])

# Hàng 1 và 2
b = a[0:2]
print("a[0:2]:\n", a[0:2])

# Toàn bộ cột 2
c = a[:, 1]
print("a[:,1]:\n", a[:, 1])

# Hai hàng đầu, cột 2
print("a[0:2, 1]:\n", a[0:2, 1])

# Sửa hàng 2
a[1] = torch.Tensor([9, 9])
print("Sau sửa a[1]:\n", a)

# Sửa cột 2 của hai hàng đầu
a[0:2, 1] = torch.Tensor([4, 4])
print("Sau sửa a[0:2, 1]:\n", a)

Kết quả

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.]])