লিনিয়ার আলজেব্রা ছাড়া মেশিন লার্নিং চিন্তা করা অসম্ভব। মেশিন লার্নিং মডেল এ আমরা যেসব ইকুয়েশন ব্যবহার করি তার গাণিতিক ভিত্তি হলো এই লিনিয়ার আলজেব্রা।
আজকে আমরা মেশিন লার্নিং এর চশমা পরে লিনিয়ার আলজেব্রার বেসিক কনসেপ্ট গুলো রিভিউ করবো।
স্কেলার (Scalars / 0D Tensors)
গণিতের ভাষায় স্কেলার বলতে কোনো ভেক্টর এর এলিমেন্ট গুলোকে বোঝায়। এটা একটা বাস্তব সংখ্যা, শুধু মান নির্দেশ করে, এর কোনো দিক নেই।
কম্পিউটার এর ভাষায়, যে Tensor এ একটি মাত্র নাম্বার থাকে তাকে Scalar (বা Scalar Tensor বা 0-dimensional Tensor বা 0D Tensor) বলে। numpy এ যেকোনো float32 বা float64 নাম্বার-ই হলো Scalar Tensor .
সহজ ভাষায়, Tensor হলো ডাটার কন্টেইনার। বেশিরভাগ সময়-ই তা Numerical ডাটা।
>>> import numpy as np >>> x = np.array(20) >>> x array(20) >>> x.ndim 0
`ndim` attribute ব্যবহার করে আমার কোনো tensor এর কয়টি axes আছে তা জানতে পারি। axes কে rank ও বলা হয়ে থাকে। Scalar এর ক্ষেত্রে axes 0, তাই একে rank 0 tensor বলা হয়।
ভেক্টর (Vectors or 1D Tensors)
সহজ ভাবে বলতে গেলে, Number এর array -ই হলো vector বা 1D-Tensor.
1D tensor এর exactly একটাই axis থাকে।
>>> x = np.array([12, 3, 6, 14]) >>> x array([12, 3, 6, 14]) >>> x.ndim 1
এখানে, x ভেক্টরটিতে ৫টি এলিমেন্ট আছে। এর মানে, এটি একটি 5-dimensional vector.
5D vector আর 5D tensor কিন্তু এক জিনিস না। 5d vector এর একটাই axis এবং সেই axis এ ৫টি dimenson আছে বা ৫টি এলিমেন্ট আছে।
আর 5d tensor এর ক্ষেত্রে axes হবে ৫টা আর প্রতিটা axes এ একাধিক dimension বা element থাকতে পারে।
মেট্রিক্স (Matrices or 2D Tensor)
একই dimension এর vector গ্ৰুপ-ই হলো Matrix বা 2D tensor. যেহেতু 2D tensor কাজেই এর axes ২টি (row আর column).
>>> x = np.array([[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]]) >>> x.ndim 2
প্রথম axis এর এন্ট্রি গুলো হলো row আর দ্বিতীয় axis এর এন্ট্রি গুলো হলো column . প্রদত্ত উদাহরণ এ — [5, 78, 2, 34, 0] হলো প্রথম row, আর প্রথম কলামটি হলো [5, 6, 7].
3D Tensors / Higher dimensional tensors
একাধিক মেট্রিক্স এর array -ই হলো 3D Tensor. একই ভাবে 3D tensor এর array হলো 4D tensor. এইভাবে চলতে থাকবে।
>>> x = np.array([[[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]], [[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]], [[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]]) >>> x.ndim 3
৩টি key attribute দিয়ে tensor কে সংজ্ঞায়িত করা যায় —
১. Number of Shape (Rank) — Numpy লাইব্রেরি ব্যবহার করলে ndim দিয়ে tensor এর rank জানা সম্ভব।
২. Shape — এটা একটা integer tuple. এর মাধ্যমে আমরা জানতে পারি কোনো tensor এর কয়টা axes আছে এবং প্রতিটা axis এ কতগুলো dimension আছে। যেমন: 3D tensor এর shape হতে পারে — (3,3,4). এর মানে ৩টি ৩*৪ ম্যাট্রিক্স।
৩. Data Type (dtype ) — tensor এর ডাটা টাইপ যেকোনো ধরণের হতে পারে। এটা float32, float64, unit8, char ইত্যাদি হতে পারে।
Tensor এর বাস্তব উদাহরণ —
Vector data — 2D tensor of shape (samples, features)
Timeseries data or Sequence Data — 3D tensor of shape (samples, timesteps, features)
Images — 4D tensor of shape (samples, height, width, channels) or (samples, channels, height, width)
Video — 5D tensor of shape (samples, frame, height, width, channels) or (samples, frames, channels, height, width)
0 comments:
Post a Comment