Để squeeze tensor, ta dùng phương thức torch.squeeze(). Nó trả về tensor mới với tất cả chiều của tensor đầu vào nhưng loại bỏ kích thước 1. Ví dụ, nếu shape tensor đầu vào là (M × 1 × N × 1 × P), tensor squeezed sẽ có shape (M × N × P).
Để unsqueeze tensor, ta dùng torch.unsqueeze(). Nó trả về tensor mới chèn chiều kích thước 1 tại vị trí cụ thể.
Các bước
Nhập thư viện torch. Đảm bảo đã cài.
Tạo tensor và in ra.
Tính torch.squeeze(input). Loại bỏ kích thước 1 và trả về tensor với các chiều còn lại.
Tính torch.unsqueeze(input, dim). Chèn chiều mới kích thước 1 tại dim cho trước.
In tensor squeezed và/hoặc unsqueezed.
Ví dụ 1
# Chương trình squeeze và unsqueeze tensor
import torch
# Tạo tensor toàn 1
T = torch.ones(2, 1, 2) # size 2x1x2
print("Original Tensor T:\n", T)
print("Size of T:", T.size())
# Squeeze chiều tensor
squeezed_T = torch.squeeze(T) # now size 2x2
print("Squeezed_T:\n", squeezed_T)
print("Size of Squeezed_T:", squeezed_T.size())
Kết quả
Original Tensor T:
tensor([[[1., 1.]],
[[1., 1.]]])
Size of T: torch.Size([2, 1, 2])
Squeezed_T:
tensor([[1., 1.],
[1., 1.]])
Size of Squeezed_T: torch.Size([2, 2])
Ví dụ 2
# Chương trình squeeze và unsqueeze tensor
import torch
# tạo tensor
T = torch.Tensor([1, 2, 3]) # size 3
print("Original Tensor T:\n", T)
print("Size of T:", T.size())
# Unsqueeze chiều 0 (cột)
unsqueezed_T = torch.unsqueeze(T, dim=0) # now size 1x3
print("Unsqueezed T:\n", unsqueezed_T)
print("Size of UnSqueezed T:", unsqueezed_T.size())
# Unsqueeze chiều 1 (hàng)
unsqueezed_T = torch.unsqueeze(T, dim=1) # now size 3x1
print("Unsqueezed T:\n", unsqueezed_T)
print("Size of Unsqueezed T:", unsqueezed_T.size())
Kết quả
Original Tensor T:
tensor([1., 2., 3.])
Size of T: torch.Size([3])
Unsqueezed T:
tensor([[1., 2., 3.]])
Size of UnSqueezed T: torch.Size([1, 3])
Unsqueezed T:
tensor([[1.],
[2.],
[3.]])
Size of Unsqueezed T: torch.Size([3, 1])