পাইথন রিফ্রেশার
কেন Python — Deep Learning-এর প্রিয় ভাষা?
C++ দ্রুত, Java এন্টারপ্রাইজ-ফ্রেন্ডলি, JavaScript ব্রাউজারের রাজা — তবু Deep Learning জগতে Python-ই রাজত্ব করে। কারণ তিনটি: সহজ syntax, বিশাল ecosystem (NumPy, PyTorch, TensorFlow), এবং গবেষকদের প্রথম পছন্দ হওয়ায় নতুন গবেষণা সবার আগে Python-এ আসে।
ইংরেজির মতো — for x in list: print(x)
NumPy, Pandas, PyTorch — সব রেডি।
৫ লাইনে মডেল ট্রেইন করা যায়।
CUDA-এর সাথে seamless।
Setup — Google Colab দিয়ে শুরু
কম্পিউটারে কিছুই ইনস্টল করতে হবে না। শুধু colab.research.google.com খুলুন → New Notebook → ফ্রি GPU চালু করুন (Runtime → Change runtime type → GPU)। ব্যস, আপনার Deep Learning ল্যাব রেডি।
Python-এর মূল ডেটা স্ট্রাকচার — ঝটপট রিভিউ
List — সবচেয়ে ব্যবহৃত
# তৈরি
numbers = [1, 2, 3, 4, 5]
# slicing — শুরু থেকে শেষ
print(numbers[1:4]) # [2, 3, 4]
print(numbers[::-1]) # উল্টো — [5, 4, 3, 2, 1]
# comprehension — Pythonic উপায়
squares = [x**2 for x in numbers]
even = [x for x in numbers if x % 2 == 0]Dictionary — key-value জোড়া
student = {"name": "Rahul", "score": 92, "subjects": ["math", "physics"]}
# access
print(student["name"])
print(student.get("age", 0)) # নেই হলে default 0
# loop
for key, value in student.items():
print(f"{key} -> {value}")Function — DL-এ যেভাবে দরকার
def relu(x):
"""Rectified Linear Unit — Deep Learning-এর সবচেয়ে জনপ্রিয় activation।"""
return x if x > 0 else 0
# default argument + type hint
def predict(x: float, weight: float = 1.0, bias: float = 0.0) -> float:
return weight * x + bias
print(predict(5, weight=2, bias=1)) # 11NumPy — সংখ্যার জাদু
NumPy হলো Python-এ ম্যাট্রিক্স ও ভেক্টর নিয়ে কাজ করার লাইব্রেরি। Deep Learning-এর প্রতিটি গণনা আসলে ম্যাট্রিক্স গুণ। NumPy এই গণনাগুলোকে সাধারণ Python loop-এর চেয়ে ১০০ গুণ দ্রুত করে — কারণ ভেতরে C লেখা।
import numpy as np
# array তৈরি
a = np.array([1, 2, 3, 4, 5])
b = np.array([[1, 2], [3, 4]])
# গাণিতিক অপারেশন — element-wise
print(a * 2) # [2 4 6 8 10]
print(a + a) # [2 4 6 8 10]
# ম্যাট্রিক্স গুণ (DL-এর মূল অপারেশন)
W = np.array([[1, 2], [3, 4]])
x = np.array([5, 6])
print(W @ x) # [17 39]
# shape দেখা
print(b.shape) # (2, 2)
print(b.reshape(4)) # [1 2 3 4]for loop দিয়ে array-তে অপারেশন করবেন না। NumPy-এর built-in অপারেশন ব্যবহার করুন। এটাকেই বলে vectorization। GPU-তে এটা আরো ১০০০ গুণ দ্রুত হয়।# ❌ ধীর — Python loop
result = []
for i in range(1_000_000):
result.append(i * 2)
# ✅ দ্রুত — vectorized
arr = np.arange(1_000_000)
result = arr * 2Pandas — ডেটা টেবিল
Pandas হলো Excel-এর Python ভার্সন। CSV পড়া, ফিল্টার, গ্রুপিং — সব এক লাইনে।
import pandas as pd
# CSV পড়া
df = pd.read_csv("students.csv")
# প্রথম ৫ row
print(df.head())
# ফিল্টার — যাদের score 80-এর বেশি
top = df[df["score"] > 80]
# নতুন column
df["grade"] = df["score"].apply(lambda s: "A" if s > 85 else "B")
# গড় বের করা
print(df["score"].mean())Matplotlib — ছবি আঁকা
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5, 100)
y = np.maximum(0, x) # ReLU function
plt.plot(x, y)
plt.title("ReLU Activation")
plt.xlabel("Input")
plt.ylabel("Output")
plt.grid(True)
plt.show()Class — মডেল লেখার ভিত্তি
PyTorch-এ প্রতিটি মডেল একটা class। তাই OOP-এর basic বোঝা জরুরি।
class Neuron:
def __init__(self, weight, bias):
self.weight = weight
self.bias = bias
def forward(self, x):
return self.weight * x + self.bias
n = Neuron(weight=2, bias=1)
print(n.forward(5)) # 11সাধারণ ভুল ধারণা
- List-এ লক্ষ লক্ষ সংখ্যা রাখবেন না — NumPy array ব্যবহার করুন।
- NumPy array-এ for loop দিয়ে অপারেশন — মহাপাপ। Vectorize করুন।
- Pandas DataFrame-এ row by row iterate করবেন না —
.apply()বা vectorized অপারেশন ব্যবহার করুন। - Python-এ
==আরisএক না —isobject identity check করে।
অনুশীলন
১. ১ থেকে ১০০ পর্যন্ত শুধু জোড় সংখ্যার বর্গফল list comprehension দিয়ে বানান।
২. NumPy দিয়ে 3×3 random matrix তৈরি করে তার transpose ও determinant বের করুন।
৩. একটি CSV ফাইল পড়ে Pandas দিয়ে সর্বোচ্চ ও সর্বনিম্ন value-র row দেখান।
৪. Neuron class-কে modify করুন যাতে এটা list of weights নিতে পারে এবং dot product করে।
মিনি প্রজেক্ট
mean_squared_error(y_true, y_pred) — যেটা NumPy array নেবে এবং MSE ফেরত দেবে। কোনো for loop ব্যবহার করা যাবে না। (Hint: np.mean((y_true - y_pred)**2))ইন্টারভিউ প্রশ্ন
- Python list ও NumPy array-এর মধ্যে পার্থক্য কী?
- Vectorization কী এবং কেন গুরুত্বপূর্ণ?
- Pandas-এ
locওiloc-এর পার্থক্য কী? *argsএবং**kwargsকী কাজে আসে?- Python-এ shallow copy ও deep copy-এর পার্থক্য?
সারসংক্ষেপ
- Python-ই কেন DL-এর প্রিয় ভাষা।
- List, dict, function, class — দ্রুত রিভিউ।
- NumPy দিয়ে vectorized গণনা — DL-এর প্রাণ।
- Pandas দিয়ে ডেটা ম্যানিপুলেশন।
- Matplotlib দিয়ে visualization।
- পরের অধ্যায়ে আমরা গণিতের সেই অংশগুলো শিখব যা DL বোঝার জন্য লাগবেই।