Chapter 13

TensorFlow-এর মূল

TensorFlow Fundamentals
🎬 TensorFlow পরিচিতি
Google-এর তৈরি TensorFlow — Production-এ সবচেয়ে ব্যবহৃত DL framework। Keras হলো এর high-level API — অসম্ভব সরল। আগের অধ্যায়ের ১০০ লাইনের কাজ এখানে ১০ লাইনে।

Tensor কী?

Tensor = multi-dimensional array, NumPy-এর মতোই — কিন্তু GPU-তে চলতে পারে এবং automatic gradient সাপোর্ট করে।

import tensorflow as tf

a = tf.constant([[1., 2.], [3., 4.]])
b = tf.constant([[5., 6.], [7., 8.]])

print(a + b)
print(tf.matmul(a, b))
print(a.shape, a.dtype)

Keras Sequential API — সবচেয়ে সহজ

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Input(shape=(784,)),
    layers.Dense(128, activation="relu"),
    layers.Dense(64, activation="relu"),
    layers.Dense(10, activation="softmax"),
])

model.compile(
    optimizer="adam",
    loss="categorical_crossentropy",
    metrics=["accuracy"],
)

model.summary()

MNIST সম্পূর্ণ Training

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

x_train = x_train.reshape(-1, 784).astype("float32") / 255
x_test  = x_test.reshape(-1, 784).astype("float32") / 255
y_train = keras.utils.to_categorical(y_train, 10)
y_test  = keras.utils.to_categorical(y_test, 10)

model.fit(x_train, y_train, epochs=5, batch_size=64,
          validation_split=0.1)

loss, acc = model.evaluate(x_test, y_test)
print(f"Test accuracy: {acc:.4f}")

Functional API — জটিল architecture-এর জন্য

inputs = keras.Input(shape=(784,))
x = layers.Dense(128, activation="relu")(inputs)
x = layers.Dropout(0.2)(x)
outputs = layers.Dense(10, activation="softmax")(x)

model = keras.Model(inputs, outputs)

Model Subclassing — সম্পূর্ণ স্বাধীনতা

class MyModel(keras.Model):
    def __init__(self):
        super().__init__()
        self.d1 = layers.Dense(128, activation="relu")
        self.d2 = layers.Dense(10, activation="softmax")

    def call(self, x):
        return self.d2(self.d1(x))

model = MyModel()

Save ও Load

model.save("mnist.keras")
loaded = keras.models.load_model("mnist.keras")

Callbacks — useful tools

callbacks = [
    keras.callbacks.EarlyStopping(patience=3, restore_best_weights=True),
    keras.callbacks.ModelCheckpoint("best.keras", save_best_only=True),
    keras.callbacks.ReduceLROnPlateau(factor=0.5, patience=2),
]

model.fit(x_train, y_train, epochs=50, callbacks=callbacks,
          validation_split=0.1)

সাধারণ ভুল ধারণা

⚠️ এড়িয়ে চলবেন
  • Input normalize না করা — train অস্থির হবে।
  • Output layer-এ activation ভুল।
  • sparse_categorical_crossentropy বনাম categorical_crossentropy — label format-এর উপর নির্ভর।

অনুশীলন

১. Fashion-MNIST dataset-এ একই মডেল train করুন।

২. Dropout যোগ করে দেখুন overfitting কমে কিনা।

৩. model.summary() দেখে total parameter count বের করুন।

মিনি প্রজেক্ট

🚀 আজকের চ্যালেঞ্জ
একটি 3-layer MLP দিয়ে CIFAR-10 train করুন (flattened images)। Accuracy কেমন? পরের অধ্যায়ে দেখব কেন CNN অনেক ভালো।

ইন্টারভিউ প্রশ্ন

  1. Sequential, Functional, Subclassing API-এর পার্থক্য।
  2. EarlyStopping কীভাবে কাজ করে?
  3. TensorFlow vs Keras — সম্পর্ক?

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • TensorFlow + Keras দিয়ে দ্রুত মডেল।
  • ৩ ধরনের API — Sequential, Functional, Subclassing।
  • Callback দিয়ে training সহজ।