Chapter 18 of 18
The constructs used throughout this course, in one place
এই অ্যাপেন্ডিক্সটি মূলত একটি সংক্ষিপ্ত রেফারেন্স গাইড — যেখানে আমরা পুরো কোর্সে ব্যবহার করা Python এবং NumPy-এর বিভিন্ন কনস্ট্রাক্ট এক জায়গায় গুছিয়ে দিয়েছি। বিশেষ করে যারা NumPy দিয়ে LSTM তৈরি, ডেটা প্রিপারেশন, ইভ্যালুয়েশন এবং হাইপারপ্যারামিটার অপ্টিমাইজেশন চ্যাপ্টারগুলো পড়ার সময় দ্রুত কোনো কিছু মনে করিয়ে নিতে চান — তাদের জন্য এটি বিশেষভাবে উপকারী।
কোর্সে আমরা যা-ই গণনা করেছি — স্কেলার (scalar), ভেক্টর (vector), ম্যাট্রিক্স (matrix) বা টেনসর (tensor) — সবকিছুকেই কোডে NumPy-এর ndarray হিসেবে প্রকাশ করা হয়েছে, শুধু .shape দিয়ে তাদের আলাদা করা যায়।
এক-মাত্রিক ভেক্টর (3,) মানেই কলাম ভেক্টর (3,1) বা রো ভেক্টর (1,3) নয়। NumPy দিয়ে তৈরি LSTM-এ বেশিরভাগ শেপ মিসম্যাচ বাগের কারণ ঠিক এই সূক্ষ্ম পার্থক্যটি। তাই কখনো শেপ অনুমান করবেন না — সরাসরি .shape চেক করুন।
NumPy স্বয়ংক্রিয়ভাবে পরস্পর-সামঞ্জস্যপূর্ণ শেপের অ্যারেগুলোকে ডেটা কপি না করেই আকারে সমান করে ফেলে — এই কৌশলকে ব্রডকাস্টিং বলে। এর জন্যই একটি বায়াস ভেক্টর ম্যাট্রিক্সের প্রতিটি রোতে একটিমাত্র লাইনে যোগ করা সম্ভব হয়:
ব্রডকাস্টিং-এর নিয়ম: ডানদিকের ডাইমেনশন থেকে পেছনের দিকে কাজ করলে — দুটি ডাইমেনশন সামঞ্জস্যপূর্ণ তখনই হয় যদি তারা সমান হয় অথবা তাদের একটি ১ হয়। যখন একটি ১ হয়, সেটি অন্যটির সমান করে "স্ট্রেচ" করে নেওয়া হয়।
| ফাংশন | কাজ | উদাহরণ |
|---|---|---|
| np.zeros(shape) | শূন্য দিয়ে ভরা অ্যারে তৈরি করে | np.zeros((3, 4)) |
| np.ones(shape) | এক দিয়ে ভরা অ্যারে তৈরি করে | np.ones((2, 2)) |
| np.random.randn(*shape) | স্ট্যান্ডার্ড নর্মাল র্যান্ডম মান তৈরি করে | np.random.randn(3, 4) |
| np.random.seed(n) | রিপ্রোডিউসিবিলিটির জন্য র্যান্ডম সিড সেট করে | np.random.seed(42) |
| arr.reshape(shape) | ডেটা কপি না করে শেপ পরিবর্তন করে | arr.reshape(10, 1) |
| np.vstack([a, b]) | অক্ষ ০ বরাবর অ্যারে স্ট্যাক করে | x_t এবং h_{t-1} কনক্যাটেনেট করতে |
| np.concatenate([a,b], axis) | যেকোনো অক্ষ বরাবর কনক্যাটেনেট করে | np.concatenate([x, h]) |
| arr.T | ট্রান্সপোজ করে | গ্রেডিয়েন্ট সমীকরণে W.T |
| A @ B | ম্যাট্রিক্স গুণন | গেট সমীকরণে W @ x |
| arr1 * arr2 | উপাদান-ভিত্তিক গুণন (⊙) | সেল আপডেটে f_t * C_prev |
| np.tanh(arr) | Tanh উপাদান-ভিত্তিকভাবে প্রয়োগ করে | ক্যান্ডিডেট সেল ও আউটপুট স্কোয়াশিং |
| np.exp(arr) | এক্সপোনেনশিয়াল উপাদান-ভিত্তিকভাবে প্রয়োগ করে | সিগময়েডের ভেতরে: 1/(1+exp(-z)) |
| np.clip(arr, min, max) | মানকে নির্দিষ্ট সীমায় আটকে রাখে | গ্রেডিয়েন্ট ক্লিপিং |
| np.allclose(a, b) | দুটি অ্যারে সংখ্যাগতভাবে সমান কি না পরীক্ষা করে | ফরোয়ার্ড পাসের মান যাচাইয়ে |
কোর্সের সব কোড Python 3.9+, NumPy 1.24+ এবং TensorFlow 2.12+-এ পরীক্ষিত। রিপ্রোডিউসিবিলিটির জন্য নির্দিষ্ট ভার্সন পিন করতে: