Tensor — বহুমাত্রিক তথ্যভাণ্ডার
Tensor
বসুন্ধরার শপিং মল
ধর তুই বসুন্ধরা সিটিতে গেছস শপিং করতে। মলটার কথা ভাবো: প্রতিটা ফ্লোরে অনেক দোকান আছে, প্রতিটা দোকানে অনেক shelf, প্রতিটা shelf-এ অনেক product। তুই যদি এই পুরা মলের inventory track করতে চাস — শুধু একটা list (1D) দিয়া হইব না, table (2D)-ও যথেষ্ট না! তোর লাগবে একটা 3D structure: floor × shop × shelf। মামা বলল 'ভাই, এইটাকেই tensor বলে! একটা Rubik's Cube মনে করো — লম্বা, চওড়া, আর গভীরতা — তিন দিকে data!' আরেকজন বলল 'মামা, ভিডিওতে তো time-ও আছে!' মামা বলল '4D tensor! Frame × Height × Width × Color — CNN যেভাবে ভিডিও দেখে!'
এইটাই Tensor! Scalar (0D), Vector (1D), Matrix (2D)-এর পর আসে Tensor (3D, 4D, 5D, ...)। Multi-dimensional array যেইটা complex, structured data store করে। ML/Deep Learning-এর সব data tensor আকারে থাকে — PyTorch আর TensorFlow নামেই tensor আছে!
সংজ্ঞা
Tensor হইল multi-dimensional array — scalar (0D), vector (1D), matrix (2D)-এর generalization। n-dimensional tensor-এর n টা axis বা dimension থাকে। Deep learning-এ সব data (images, text, audio) tensor আকারে process হয়।
ব্যাখ্যা
Tensor-এর Dimension/Rank বোঝো
Tensor-এর 'rank' (dimension/order) মানে কয়টা axis আছে। Scalar = rank-0 (কোনো axis নাই), Vector = rank-1 (1 axis), Matrix = rank-2 (2 axes: row × col), 3D Tensor = rank-3 (3 axes)। PyTorch-এ .ndim দিয়া rank আর .shape দিয়া প্রতিটা axis-এর size দেখবা। Note: এই 'rank' আর matrix rank আলাদা জিনিস!
ML-এ Common Tensor Shapes
Images: (batch, channels, height, width) = 4D। Text: (batch, sequence_length, embedding_dim) = 3D। Video: (batch, frames, channels, height, width) = 5D। Tabular data: (batch, features) = 2D। Batch dimension সামনে থাকে কারণ GPU parallel processing করে।
Tensor Operations
Tensors-এ element-wise operations (add, multiply), reshaping (view, reshape, permute), slicing (indexing), আর contraction (einsum, matmul) করা যায়। Broadcasting rule: ছোট tensor-কে automatically বড়টার shape-এ expand করে। Reshape সবচেয়ে common — CNN-এর output flatten করো, তারপর linear layer-এ দাও।
Image Batch Tensor বানাও
তোর কাছে 4টা RGB image আছে, প্রতিটা 32×32 pixel। এইগুলারে একটা batch tensor-এ সাজাও আর CNN-এ দেওয়ার জন্য prepare করো।
Step 1: Dimensions বোঝো
4 images, প্রতিটা RGB (3 channels), 32 height, 32 width
Step 2: Total Elements
4 × 3 × 32 × 32 = 12,288 numbers — এতগুলা number একটা organized structure-এ!
Step 3: Accessing Data
batch[2, 1, 15, 20] মানে 3rd image-র Green channel-এর 16th row, 21st column pixel। 4D tensor-এ ঠিক ঠিকানা!
Step 4: CNN-এর জন্য Reshape
CNN-এর Conv2d layer সরাসরি (B, C, H, W) নেয়। কিন্তু FC layer-এ দিতে হইলে flatten করো: (4, 3, 32, 32) → (4, 3072)।
4টা 32×32 RGB image = (4, 3, 32, 32) tensor = 12,288 numbers। মামা বলে 'tensor হইল বসুন্ধরা মল — floor (batch) × wing (channel) × row (height) × column (width)!'
ML-এ কোথায় লাগে?
মনে রাখার ট্রিক
Tensor = বসুন্ধরা মলের inventory — ফ্লোর × দোকান × shelf × product। Scalar = একটা সংখ্যা, Vector = একটা list, Matrix = একটা table, Tensor = multi-dimensional table। PyTorch-এ .shape দেখো আর .ndim গুনো!