Các hoạt động cơ bản với Tensors trong PyTorch

Cac Hoat Dong Co Ban Voi Tensors Trong Pytorch



Tensors là nền tảng của PyTorch, cung cấp cấu trúc dữ liệu mạnh mẽ và linh hoạt để tính toán số trong học sâu. Giống như mảng NumPy, chúng đại diện cho mảng đa chiều nhưng có thêm các tính năng và tối ưu hóa được thiết kế riêng cho các tác vụ deep learning. Vì tensor là đối tượng chính để lưu trữ và thao tác dữ liệu số trong PyTorch nên chúng có thể có các kích thước khác nhau, từ vô hướng (tensor 0 chiều) đến vectơ (tensor 1 chiều), ma trận (tensor 2 chiều) và cao hơn - tensor chiều.

Một trong những ưu điểm lớn nhất của tensor là khả năng thực hiện các phép toán hiệu quả. Tensors hỗ trợ một loạt các phép toán số học bao gồm các phép toán theo phần tử như cộng, trừ, nhân và chia cũng như các phép toán ma trận như nhân và hoán vị ma trận.

PyTorch cung cấp một bộ hàm và phương pháp toàn diện để thao tác với tensor. Chúng bao gồm các thao tác để định hình lại các tensor, trích xuất các phần tử hoặc tensor phụ cụ thể và nối hoặc tách các tensor dọc theo các kích thước xác định. Ngoài ra, PyTorch còn cung cấp các chức năng lập chỉ mục, cắt và phát sóng các tensor giúp làm việc dễ dàng hơn với các tensor có hình dạng và kích thước khác nhau.







Trong bài viết này, chúng ta sẽ tìm hiểu các thao tác cơ bản với tensor trong PyTorch, khám phá cách tạo tensor, thực hiện các thao tác cơ bản, thao tác hình dạng của chúng và di chuyển chúng giữa CPU và GPU.



Tạo Tensor

Tensor trong PyTorch có thể được tạo theo nhiều cách. Hãy cùng khám phá một số phương pháp phổ biến.



Để tạo một tensor, chúng ta có thể sử dụng lớp “torch.Tensor” hoặc hàm “torch.tensor”. Hãy xem xét một số ví dụ:





nhập khẩu ngọn đuốc

# Tạo một 1 - tensor chiều từ danh sách Python
tenxơ_1d = ngọn đuốc. tenxơ ( [ 1 , 2 , 3 , 4 , 5 ] )
in ( tenxơ_1d )

# Tạo một 2 - tensor chiều từ danh sách Python lồng nhau
tensor_2d = ngọn đuốc. tenxơ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
in ( tensor_2d )

# Tạo một tensor số 0 có hình dạng cụ thể
số không_tensor = ngọn đuốc. số không ( 3 , 2 )
in ( số không_tensor )

# Tạo một tensor gồm những cái có hình dạng cụ thể
cái_tensor = ngọn đuốc. những cái ( 2 , 3 )
in ( cái_tensor )

# Tạo một tensor với các giá trị ngẫu nhiên từ phân bố đều
tenor ngẫu nhiên = ngọn đuốc. rand ( 2 , 2 )
in ( tenor ngẫu nhiên )

Trong các ví dụ đã cho, chúng ta tạo các tensor có hình dạng khác nhau và khởi tạo chúng bằng các giá trị khác nhau, chẳng hạn như số cụ thể, số 0, số 1 hoặc giá trị ngẫu nhiên. Bạn sẽ thấy kết quả tương tự khi chạy đoạn mã trước đó:



Hoạt động của tenxơ

Khi có tensor, chúng ta có thể thực hiện các phép toán khác nhau trên chúng, chẳng hạn như các phép toán số học theo phần tử, phép toán ma trận, v.v.

Các phép toán số học theo phần tử

Các phép toán số học theo phần tử cho phép chúng ta thực hiện các phép tính giữa các tensor trên cơ sở từng phần tử. Các tensor tham gia vào hoạt động phải có hình dạng giống nhau.

Dưới đây là một số ví dụ:

nhập khẩu ngọn đuốc

# Tạo tensor
tensor1 = ngọn đuốc. tenxơ ( [ 1 , 2 , 3 ] )
tensor2 = ngọn đuốc. tenxơ ( [ 4 , 5 , 6 ] )

# Phép cộng
phép cộng = tensor1 + tensor2
in ( 'Phép cộng:' , phép cộng )

# Phép trừ
phép trừ = tensor1 - tensor2
in ( 'Phép trừ:' , phép trừ )

# Phép nhân
phép nhân = tensor1 * tensor2
in ( 'Phép nhân:' , phép nhân )

# Phân công
phân công = tensor1 / tensor2
in ( 'Phân công:' , phân công )

Trong đoạn mã đã cho, chúng ta thực hiện các phép tính cộng, trừ, nhân và chia giữa hai tensor để tạo ra một tensor mới với các giá trị được tính toán. Kết quả của đoạn mã được hiển thị như sau:

Hoạt động ma trận

PyTorch cung cấp các phép toán ma trận hiệu quả cho các tensor như nhân ma trận và chuyển vị. Các phép toán này đặc biệt hữu ích cho các tác vụ như đại số tuyến tính và tính toán mạng nơ-ron.

nhập khẩu ngọn đuốc

# Tạo tensor
tensor1 = ngọn đuốc. tenxơ ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensor2 = ngọn đuốc. tenxơ ( [ [ 5 , 6 ] , [ 7 , số 8 ] ] )

# Phép nhân ma trận
ma trận_sản phẩm = ngọn đuốc. tấm thảm ( tensor1 , tensor2 )
in ( 'Sản phẩm ma trận:' , ma trận_sản phẩm )

# Chuyển đổi ma trận
ma trận_transpose = tensor1. T
in ( 'Chuyển đổi ma trận:' , ma trận_transpose )

Trong ví dụ đã cho, chúng tôi thực hiện phép nhân ma trận bằng cách sử dụng hàm “torch.matmul” và thu được phép chuyển vị của ma trận bằng cách sử dụng thuộc tính “.T”.

Thao tác hình dạng Tensor

Ngoài việc thực hiện các thao tác trên tensor, chúng ta thường cần phải thao tác hình dạng của chúng cho phù hợp với yêu cầu cụ thể. PyTorch cung cấp một số chức năng để định hình lại các tensor. Hãy cùng khám phá một số chức năng sau:

nhập khẩu ngọn đuốc

# Tạo một tensor
tenxơ = ngọn đuốc. tenxơ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Định hình lại tensor
định hình lại tensor = tensor. định hình lại ( 3 , 2 )
in ( 'Tăng ten được định hình lại:' , định hình lại tensor )

# Lấy kích thước của một tensor
kích cỡ = tensor. kích cỡ ( )
in ( 'Kích thước của Tenor:' , kích cỡ )

# Lấy số phần tử TRONG một tensor
num_elements = tensor. đặt tên ( )
in ( 'Số phần tử:' , num_elements )

Trong mã được cung cấp, chúng tôi định hình lại một tensor bằng cách sử dụng hàm định hình lại, truy xuất kích thước của tensor bằng phương pháp size và thu được tổng số phần tử trong tensor bằng phương pháp numel.

Di chuyển Tensor giữa CPU và GPU

PyTorch cung cấp hỗ trợ tăng tốc GPU, cho phép chúng tôi thực hiện các tính toán trên cạc đồ họa, điều này có thể tăng tốc đáng kể các tác vụ học sâu bằng cách giảm thời gian đào tạo. Chúng ta có thể di chuyển các tensor giữa CPU và GPU bằng phương pháp “to”.

Ghi chú : Điều này chỉ có thể được thực hiện nếu bạn có GPU NVIDIA với CUDA trên máy của mình.

nhập khẩu ngọn đuốc

# Tạo tensor trên CPU
tensor_cpu = ngọn đuốc. tenxơ ( [ 1 , 2 , 3 ] )

# Kiểm tra nếu như GPU có sẵn
nếu như ngọn đuốc. khác biệt . có sẵn ( ) :
# Di chuyển tensor sang GPU
tensor_gpu = tensor_cpu. ĐẾN ( 'khác biệt' )
in ( 'Tăng ten trên GPU:' , tensor_gpu )
khác :
in ( 'GPU không có sẵn.' )

Trong mã được cung cấp, chúng tôi kiểm tra xem GPU có sẵn hay không bằng cách sử dụng torch.cuda.is_available(). Nếu có GPU, chúng tôi di chuyển tensor từ CPU sang GPU bằng phương thức “to” với đối số “cuda”.

Phần kết luận

Hiểu các hoạt động tensor cơ bản là rất quan trọng để làm việc với PyTorch và xây dựng các mô hình deep learning. Trong bài viết này, chúng ta đã khám phá cách tạo tensor, thực hiện các thao tác cơ bản, thao tác với hình dạng của chúng và di chuyển chúng giữa CPU và GPU. Được trang bị kiến ​​thức này, giờ đây bạn có thể bắt đầu làm việc với tensor trong PyTorch, thực hiện các phép tính và xây dựng các mô hình học sâu phức tạp. Tensor đóng vai trò là nền tảng để biểu diễn và thao tác dữ liệu trong PyTorch, cho phép bạn phát huy toàn bộ sức mạnh của khung học máy linh hoạt này.