PyTorch sirf Ek Ghante mein

Part 2 - Understanding Tensors

Tensors ek mathematical concept hai jo vectors aur matrices ko higher dimensions tak generalize karta hai. Doosre shabdon mein, tensors ko unke 'rank' (dimensions ki sankhya) se pehchana jaata hai.

Computationally, tensors data containers ki tarah kaam karte hain. PyTorch tensors, NumPy arrays jaise hi hain, lekin inme deep learning ke liye zaroori extra features hote hain, jaise automatic differentiation (autograd) aur GPU par fast computation.

2.1 Scalars, Vectors, Matrices, and Tensors

Ek scalar 0-dimensional tensor (sirf ek number), ek vector 1-dimensional tensor, aur ek matrix 2-dimensional tensor hota hai. Chaliye `torch.tensor()` function se kuch tensors banate hain.

import torch

# 0D tensor (scalar)
tensor0d = torch.tensor(1)

# 1D tensor (vector)
tensor1d = torch.tensor([1, 2, 3])

# 2D tensor (matrix)
tensor2d = torch.tensor([[1, 2], [3, 4]])

# 3D tensor
tensor3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

2.2 Tensor Data Types

Jab hum integers se tensor banate hain, to PyTorch default `torch.int64` data type use karta hai. Aap `.dtype` attribute se isse check kar sakte hain.

tensor1d = torch.tensor([1, 2, 3])
print(tensor1d.dtype)

Output:

torch.int64

Floats ke liye, PyTorch default `torch.float32` use karta hai. Yeh precision aur computational efficiency ke beech ek achha balance hai, aur GPUs 32-bit computations ke liye optimized hote hain.

floatvec = torch.tensor([1.0, 2.0, 3.0])
print(floatvec.dtype)

Output:

torch.float32

Aap `.to()` method ka use karke data type ko aasani se badal sakte hain:

floatvec = tensor1d.to(torch.float32)
print(floatvec.dtype)

Output:

torch.float32

2.3 Common PyTorch Tensor Operations

Chaliye kuch zaroori tensor operations dekhte hain jo har project mein kaam aate hain.

Shape of a Tensor: `.shape` attribute se tensor ke dimensions pata chalte hain.

tensor2d = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(tensor2d.shape)

Output:

torch.Size([2, 3])

Reshaping Tensors: `.view()` (zyada common) ya `.reshape()` se tensor ko naya shape de sakte hain.

print(tensor2d.view(3, 2))

Output:

tensor([[1, 2],
        [3, 4],
        [5, 6]])

Transposing Tensors: `.T` attribute se tensor ko uske diagonal par flip (transpose) kiya jaata hai.

print(tensor2d.T)

Output:

tensor([[1, 4],
        [2, 5],
        [3, 6]])

Matrix Multiplication: Do matrices ko multiply karne ke liye `.matmul()` ya `@` operator ka use hota hai.

# Using .matmul()
print(tensor2d.matmul(tensor2d.T))

# Using @ operator
print(tensor2d @ tensor2d.T)

Dono ka output same hoga:

tensor([[14, 32],
        [32, 77]])

PyTorch mein aur bhi bahut saare operations hain, jinke baare mein aap official documentation mein padh sakte hain.