কম্পিউটার টিউটোরিয়াল

Python-এ 'tf.keras.layers.Dense' বেসিক ইমপ্লিমেন্টেশন প্রদর্শন

TensorFlow হল Google-এর ওপেন-সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক, যা Python-এ অ্যালগরিদম, ডিপ লার্নিং মডেল এবং AI অ্যাপ্লিকেশন বাস্তবায়নে ব্যবহৃত হয়। গবেষণা থেকে প্রোডাকশন পর্যন্ত এর ব্যবহার বেপার।

টেনসর (Tensor) কী?

টেনসর হল TensorFlow-এ মূল ডেটা স্ট্রাকচার — একটি বহুমাত্রিক অ্যারে (multidimensional array) যা ডেটা ফ্লো গ্রাফের নোডগুলো সংযুক্ত করে। সহজ ভাষায়: এটি একটি জেনারালাইজড ম্যাট্রিক্স যা স্কেলার (০D), ভেক্টর (১D), ম্যাট্রিক্স (২D) এবং উচ্চ মাত্রার ডেটা ধারণ করতে পারে।

Keras: TensorFlow-এর হাই-লেভেল API

Keras ONEIROS প্রকল্প থেকে উদ্ভূত একটি ডিপ লার্নিং API, যা Python-এ লেখা। এটি TensorFlow-এর উপরে চলে এবং মেশিন লার্নিং মডেল দ্রুত তৈরি, পরীক্ষা এবং ডিপ্লয় করার জন্য উন্নত ইন্টারফেস প্রদান করে।

Keras-এর সুবিধা

  • TensorFlow-এর সাথে অন্তর্নির্মিত (built-in)
  • TPU/GPU ক্লাস্টারে স্কেলেবল
  • মডেল ব্রাউজার (TensorFlow.js) এবং মোবাইল (TensorFlow Lite)-এ এক্সপোর্টযোগ্য
  • ফাংশনাল API দিয়ে জটিল আর্কিটেকচার (নন-লিনিয়ার, শেয়ার্ড লেয়ার, মাল্টি-ইনপুট/আউটপুট) তৈরি সম্ভব

ইনস্টলেশন

pip install tensorflow

Keras অ্যাক্সেস

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

Google Colaboratory

এই উদাহরণ Google Colab-এ চালানো হয়েছে — ফ্রি GPU, জিরো সেটআপ, ব্রাউজার-ভিত্তিক Jupyter Notebook পরিবেশ।

উদাহরণ: কাস্টম Dense লেয়ার ইমপ্লিমেন্টেশন

class CustomDense(layers.Layer):
    def __init__(self, units=32):
        super(CustomDense, self).__init__()
        self.units = units

    def build(self, input_shape):
        # ওয়েইট ম্যাট্রিক্স: (input_dim, units)
        self.w = self.add_weight(
            shape=(input_shape[-1], self.units),
            initializer="random_normal",
            trainable=True,
        )
        # বায়াস ভেক্টর: (units,)
        self.b = self.add_weight(
            shape=(self.units,),
            initializer="random_normal",
            trainable=True
        )

    def call(self, inputs):
        # ফরওয়ার্ড পাস: y = xW + b
        return tf.matmul(inputs, self.w) + self.b

# মডেল তৈরি
inputs = keras.Input(shape=(4,))
outputs = CustomDense(10)(inputs)

print("Keras মডেল তৈরি হচ্ছে...")
model = keras.Model(inputs, outputs)

কোড উৎস: TensorFlow অফিসিয়াল গাইড

আউটপুট

Keras মডেল তৈরি হচ্ছে...

ব্যাখ্যা

  1. CustomDense ক্লাস: layers.Layer ইনহেরিট করে একটি পূর্ণাঙ্গ কেরাস লেয়ার তৈরি করা হয়েছে। এটি বিল্ট-ইন Dense লেয়ারর অনুরূপ কাজ করে কিন্তু আंतरিক কার্যক্রম বোঝাতে সাহায্য করে।
  2. __init__(): কনস্ট্রাক্টরে units (নিউরনের সংখ্যা) গ্রহণ করে এবং সংরক্ষণ করে। super().__init__() কল করা বাধ্যতামূলক।
  3. build(input_shape): লেয়ার প্রথমবার কল হলে স্বয়ংক্রিয়ভাবে ডাকা হয়। এখানে:
    • self.w: ওয়েইট ম্যাট্রিক্স, আকার (input_dim, units)। input_shape[-1] হল ইনপুট ফিচারের সংখ্যা।
    • self.b: বায়াস ভেক্টর, আকার (units,)।
    • add_weight(): ট্রেনেবল প্যারামিটার রেজিস্টার করে (গ্রেডিয়েন্ট ডিসেন্টের জন্য)।
    • initializer="random_normal": সাধারণ বিতরণ থেকে র‍্যান্ডম ইনিশিয়ালাইজেশন।
  4. call(inputs): ফরওয়ার্ড পাস লজিক — ম্যাট্রিক্স গুণ (tf.matmul) এবং বায়াস যোগ। এটি লেয়ারের মূল গণনা।
  5. মডেল তৈরি: keras.Input দিয়ে ইনপুট লেয়ার, তারপর কাস্টম লেয়ার কল করে আউটপুট, এবং keras.Model দিয়ে পুরো মডেল সংজ্ঞায়িত।

বিল্ট-ইন Dense লেয়ারের সাথে তুলনা

# সমতুল্য বিল্ট-ইন ব্যবহার
from tensorflow.keras.layers import Dense
outputs = Dense(10, activation=None)(inputs)  # activation=None ডিফল্ট

কাস্টম লেয়ার বুঝতে হলে বিল্ট-ইন Dense কীভাবে কাজ করে সেটা জানা গুরুত্বপূর্ণ। Dense আंतरিকভাবে একই build/call প্যাটার্ন ফলো করে।

কাস্টম লেয়ার কেন তৈরি করবেন?

  • নন-স্ট্যান্ডার্ড অ্যাক্টিভেশন, কাস্টম ইনিশিয়ালাইজেশন, কনস্ট্রেইন্ট যুক্ত করতে।
  • নতুন লেয়ার টাইপ গবেষণা/প্রোটোটাইপিং করতে।
  • লেয়ারের আंतरিক 동작 (যেমন ওয়েইট শেয়ারিং, কাস্টম গ্রেডিয়েন্ট) নিয়ন্ত্রণ করতে।
  • get_config() ইমপ্লিমেন্ট করে সিরিয়ালাইজেবল বানাতে (পূর্বের আর্টিকেল দেখুন)।

সেরা অনুশীলন

  • সম্ভব হলে বিল্ট-ইন লেয়ার (Dense, Conv2D, ইত্যাদি) ব্যবহার করুন — অপ্টিমাইজড এবং টেস্টেড।
  • কাস্টম লেয়ার লিখতে হলে build()-এ শেপ-ডিপেন্ডেন্ট ওয়েইট তৈরি করুন, __init__-এ না।
  • অ্যাক্টিভেশন ফাংশন আলাদা Activation লেয়ার বা activation আর্গুমেন্টে দিন।
  • ইনপুট ভ্যালিডেশনের জন্য input_spec সেট করুন।
  1. Python-এ Keras ব্যবহার করে মডেল প্লট কীভাবে করা যায়?

  2. Python-এ Keras ফাংশনাল API ব্যবহার করে লেয়ার তৈরি করার পদ্ধতি

  3. পাইথনের অভ্যন্তরীণ কাজকর্ম

  4. পাইথনে ইনহেরিটেন্স (Inheritance)