Hàm torch.arange() trong PyTorch

Hàm torch.arange()

Hàm torch.arange() trong thư viện PyTorch được sử dụng để tạo một tensor 1 chiều chứa các giá trị từ khoảng [start, end) với bước nhảy cố định là step.

torch.arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor

Mô tả

Hàm này trả về một tensor có kích thước ⌈(end - start) / step⌉ với các giá trị nằm trong khoảng [start, end), bắt đầu từ start và tăng dần theo từng bước step. Lưu ý rằng giá trị end không bao gồm trong tensor kết quả.

Với các bước nhảy (step) không phải số nguyên, có thể xảy ra lỗi làm tròn của số thực khi so sánh với end. Để tránh bất nhất, nên thêm một giá trị nhỏ epsilon vào end trong trường hợp này.

Công thức tính toán giữa các phần tử:

output[i+1] = output[i] + step

Lưu ý: Khi sử dụng kiểu dữ liệu số thực (đặc biệt là các kiểu có độ chính xác thấp như bfloat16), kết quả có thể bị ảnh hưởng bởi lỗi làm tròn. Một số giá trị trong dãy có thể không biểu diễn chính xác trong các định dạng số thực, dẫn đến việc lặp lại giá trị hoặc làm tròn không mong muốn. Để đảm bảo chính xác, nên sử dụng kiểu dữ liệu số nguyên thay vì số thực.

Tham số

  • start (số): Giá trị bắt đầu của dãy. Mặc định: 0.
  • end (số): Giá trị kết thúc của dãy (không bao gồm).
  • step (số): Khoảng cách giữa các phần tử liên tiếp. Mặc định: 1.

Khi hàm chỉ nhận một tham số duy nhất, tham số đó sẽ được coi là end, với start mặc định là 0step1.

Tham số tùy chọn

  • out (torch.Tensor, tùy chọn): Tensor đầu ra.
  • dtype (torch.dtype, tùy chọn): Kiểu dữ liệu mong muốn của tensor đầu ra. Mặc định: Nếu None, sử dụng kiểu toàn cục mặc định (xem torch.set_default_tensor_type()). Nếu không chỉ định dtype, kiểu dữ liệu sẽ được suy luận từ các đối số đầu vào khác. Nếu bất kỳ start, end, hoặc step nào là số thực, dtype sẽ được suy luận là kiểu số thực mặc định (xem get_default_dtype()). Ngược lại, dtype sẽ được suy luận là torch.int64.
  • layout (torch.layout, tùy chọn): Bố cục mong muốn của tensor đầu ra. Mặc định: torch.strided.
  • device (torch.device, tùy chọn): Thiết bị mong muốn của tensor đầu ra. Mặc định: Nếu None, sử dụng thiết bị hiện tại cho kiểu tensor mặc định (xem torch.set_default_tensor_type()). Thiết bị sẽ là CPU cho kiểu tensor CPU và thiết bị CUDA hiện tại cho kiểu tensor CUDA.
  • requires_grad (bool, tùy chọn): Nếu tự động ghi lại các phép toán trên tensor đầu ra hay không. Mặc định: False.

Ví dụ

import torch

# Tạo tensor từ 0 đến 4
tensor_1 = torch.arange(5)
print(tensor_1)  # Output: tensor([0, 1, 2, 3, 4])

# Tạo tensor từ 1 đến 3
tensor_2 = torch.arange(1, 4)
print(tensor_2)  # Output: tensor([1, 2, 3])

# Tạo tensor từ 1 đến 2.5 với bước nhảy 0.5
tensor_3 = torch.arange(1, 2.5, 0.5)
print(tensor_3)  # Output: tensor([1.0000, 1.5000, 2.0000])

# Tạo tensor từ 0 đến 24 với bước nhảy 2
tensor_4 = torch.arange(0, 25, 2)
print(tensor_4)  # Output: tensor([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24])

Thẻ: PyTorch torch.arange tensor

Đăng vào ngày 25 tháng 6 lúc 17:37