Rate this post

Điều cần thiết là phải hiểu tất cả các khái niệm cơ bản cần thiết để làm việc với PyTorch. PyTorch hoàn toàn dựa trên Tensors. Tensor có các hoạt động để thực hiện. Ngoài những điều này, có rất nhiều khái niệm khác được yêu cầu để thực hiện nhiệm vụ.

Bây giờ, hãy hiểu từng khái niệm một để có kiến ​​thức sâu về PyTorch.

Các bài viết liên quan:

Ma trận hoặc Tensors

Tensors là thành phần quan trọng của Pytorch. Có thể nói PyTorch hoàn toàn dựa trên Tensors. Theo thuật ngữ toán học, một mảng số hình chữ nhật được gọi là số liệu. Trong thư viện Numpy, những chỉ số này được gọi là ndaaray. Trong PyTorch, nó được gọi là Tensor. Tensor là một vùng chứa dữ liệu n chiều. Ví dụ: Trong PyTorch, 1d-Tensor là một vectơ, 2d-Tensor là một số liệu, 3d- Tensor là một khối lập phương và 4d-Tensor là một vectơ lập phương.

Các ma trận phía trên đại diện cho 2D-Tensor với ba hàng và hai cột.

Có ba cách để tạo Tensor. Mỗi người có một cách khác nhau để tạo Tensor. Hàng chục được tạo như:

  • Tạo PyTorch Tensor một mảng
  • Tạo một Tensor với tất cả những cái và số ngẫu nhiên
  • Tạo Tensor từ mảng numpy

Hãy xem Tensors được tạo ra như thế nào

Tạo một Tensor PyTorch dưới dạng một mảng

Trong điều này, trước tiên bạn phải xác định mảng và sau đó truyền mảng đó vào phương thức Tensor của ngọn đuốc làm đối số.

Ví dụ

import torch  
arr = [[3, 4], [8, 5]]   
pyTensor = torch.Tensor(arr)  
print(pyTensor)   

Đầu ra:

Tạo một Tensor với số ngẫu nhiên và tất cả một

Để tạo một số ngẫu nhiên Tensor, bạn phải sử dụng phương thức rand () và để tạo một Tensor với tất cả những cái bạn phải sử dụng những cái () của ngọn đuốc. Để tạo số ngẫu nhiên, một phương pháp khác của ngọn đuốc sẽ được sử dụng với rand, tức là manual_seed với 0 tham số.

Ví dụ

import torch  
ones_t = torch.ones((2, 2))   
torch.manual_seed(0)  //to have same values for random generation  
rand_t = torch.rand((2, 2))  
print(ones_t)  
print(rand_t)  

Đầu ra:

Tạo một Tensor từ mảng numpy

Để tạo một Tensor từ mảng numpy, chúng ta phải tạo một mảng numpy. Khi mảng numpy của bạn được tạo, chúng ta phải chuyển nó vào from_numpy () làm đối số. Phương thức này chuyển đổi mảng numpy thành Tensor.

Ví dụ

import torch  
import numpy as np1  
numpy_arr = np1.ones((2, 2))  
pyTensor = torch.from_numpy(numpy_arr)  
np1_arr_from_Tensor = pyTensor.numpy()  
print(np1_arr_from_Tensor)  

Đầu ra:

Tensor operator

Tensor tương tự như một mảng, vì vậy tất cả các hoạt động mà chúng ta đang thực hiện trên một mảng cũng có thể áp dụng cho Tensor.

Thay đổi kích thước một Tensor

Chúng ta có thể thay đổi kích thước của Tensor bằng cách sử dụng thuộc tính size của Tensor. Chúng tôi sử dụng Tensor.view () để thay đổi kích thước Tensor. Thay đổi kích thước Tensor có nghĩa là chuyển đổi Tensor 2 * 2 chiều thành 4 * 1 hoặc 4 * 4 chiều Tensor thành 16 * 1, v.v. Để in kích thước Tensor, chúng ta sử dụng phương thức Tensor.size ().

Hãy xem một ví dụ về thay đổi kích thước một Tensor.

import torch  
pyt_Tensor = torch.ones((2, 2))  
print(pyt_Tensor.size())        # shows the size of this Tensor  
pyt_Tensor = pyt_Tensor.view(4) # resizing 2x2 Tensor to 4x1  
print(pyt_Tensor)  

Đầu ra:

Các phép toán

Tất cả các phép toán như cộng, trừ, chia và nhân đều có thể được thực hiện trên Tensor. Ngọn đuốc có thể thực hiện các phép toán. Chúng tôi sử dụng torch.add (), torch.sub (), torch.mul () và torch.div () để thực hiện các hoạt động trên Tensors.

Hãy xem một ví dụ về cách các phép toán được thực hiện:

import numpy as np  
import torch  
Tensor_a = torch.ones((2, 2))  
Tensor_b = torch.ones((2, 2))  
result=Tensor_a+Tensor_b  
result1 = torch.add(Tensor_a, Tensor_b)     //another way of addidtion  
Tensor_a.add_(Tensor_b) // In-place addition  
print(result)  
print(result1)  
print(Tensor_a)  

Đầu ra:

Trung bình và độ lệch chuẩn

Chúng ta có thể tính toán độ lệch chuẩn của Tensor cho một chiều hoặc nhiều chiều. Trong phép tính toán học của chúng tôi, trước tiên chúng tôi phải tính giá trị trung bình, và sau đó chúng tôi áp dụng công thức sau trên dữ liệu đã cho với giá trị trung bình.

Nhưng trong Tensor, chúng ta có thể sử dụng Tensor.mean () và Tensor.std () để tìm độ lệch và giá trị trung bình của Tensor đã cho.

Hãy xem một ví dụ về cách nó hoạt động.

import torch  
pyTensor = torch.Tensor([1, 2, 3, 4, 5])  
mean = pyt_Tensor.mean(dim=0)        //if multiple rows then dim = 1  
std_dev = pyTensor.std(dim=0)       // if multiple rows then dim = 1  
print(mean)  
print(std_dev)  

Đầu ra:

Biến và Gradient

Lớp trung tâm của gói là autograd.variable. Nhiệm vụ chính của nó là quấn một Tensor. Nó hỗ trợ gần như tất cả các hoạt động được định nghĩa trên đó. Bạn có thể gọi .backword () và có tất cả các cấp độ

Tôi chỉ tính toán khi bạn hoàn thành việc tính toán của mình.

Thông qua thuộc tính .data, bạn có thể truy cập hàng Tensor, trong khi gradient cho biến này được tích lũy thành .grad.

Trong Deep learning, tính toán độ dốc là điểm mấu chốt. Các biến được sử dụng để tính toán gradient trong PyTorch. Nói một cách đơn giản, các biến chỉ là một lớp bao bọc xung quanh Tensors với chức năng tính toán độ dốc.

Dưới đây là mã python được sử dụng để quản lý các biến.

import numpy as np  
import torch  
from torch.autograd import Variable  
pyt_var = Variable(torch.ones((2, 2)), requires_grad = True)  

Đoạn mã trên hoạt động giống như Tensors, do đó chúng ta có thể áp dụng tất cả các thao tác theo cùng một cách.

Hãy xem cách chúng ta có thể tính toán gradient trong PyTorch.

Ví dụ

import numpy as np  
import torch  
from torch.autograd import Variable    
// let's consider the following equation  
// y = 5(x + 1)^2  
x = Variable (torch.ones(1), requires_grad = True)  
y = 5 * (x + 1) ** 2        //implementing the equation.  
y.backward()                // calculate gradient  
print(x.grad)                // get the gradient of variable x  
# differentiating the above mentioned equation  
// => 5(x + 1)^2 = 10(x + 1) = 10(2) = 20  

Đầu ra:

Leave a Reply

Call now
%d bloggers like this: