Custom Layer কীভাবে তৈরি এবং ব্যবহার করা যায়

Custom Layers এবং Loss Functions তৈরি করা - কেরাস (Keras) - Machine Learning

363

Keras এর Custom Layer তৈরি করা একটি শক্তিশালী কৌশল, যা আপনাকে কাস্টম অপারেশন এবং ফাংশন ব্যবহার করে মডেল তৈরি করতে সহায়তা করে। কাস্টম লেয়ার তৈরি করার মাধ্যমে আপনি নিজের লজিক বা বিশেষ প্রক্রিয়া মডেলে যুক্ত করতে পারেন, যা পূর্বনির্ধারিত লেয়ারগুলির মাধ্যমে সম্ভব নয়।

Keras এ কাস্টম লেয়ার তৈরি করতে, আপনাকে tf.keras.layers.Layer ক্লাসটি ইনহেরিট করতে হবে এবং আপনার প্রয়োজনীয় কার্যপ্রণালী ও লজিক call() মেথডে সংজ্ঞায়িত করতে হবে। নিচে কাস্টম লেয়ার তৈরি ও ব্যবহার করার ধাপগুলো বিস্তারিতভাবে আলোচনা করা হয়েছে।


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

ধাপ ১: tf.keras.layers.Layer ক্লাস ইনহেরিট করা

প্রথমে, একটি কাস্টম লেয়ার তৈরি করার জন্য আপনাকে tf.keras.layers.Layer ক্লাসটি ইনহেরিট করতে হবে। তারপর, __init__() এবং call() মেথডগুলি সংজ্ঞায়িত করতে হবে।

  1. __init__() মেথডে আপনি লেয়ারটির ইনিশিয়ালাইজেশন করতে পারবেন, যেমন ওয়েটস (weights) এবং অন্যান্য হাইপারপ্যারামিটার সেট করা।
  2. call() মেথডে লেয়ারের কাজ বা কাস্টম লজিক বাস্তবায়িত করা হয়, যেমন ইনপুট ডেটার উপর অপারেশন করা।

উদাহরণ ১: একটি কাস্টম লেয়ার তৈরি করা

ধরা যাক, আমরা একটি কাস্টম লেয়ার তৈরি করবো, যা ইনপুট ডেটার উপর একটি স্কেলিং অপারেশন করবে (ইনপুটকে একটি নির্দিষ্ট ফ্যাক্টর দিয়ে গুণ করবে)।

import tensorflow as tf

# কাস্টম লেয়ার তৈরি করা
class CustomScalingLayer(tf.keras.layers.Layer):
    def __init__(self, scale_factor=1.0):
        super(CustomScalingLayer, self).__init__()
        self.scale_factor = scale_factor  # স্কেল ফ্যাক্টর

    def call(self, inputs):
        return inputs * self.scale_factor  # ইনপুটে স্কেলিং অ্যাপ্লাই করা

এখানে:

  • CustomScalingLayer একটি কাস্টম লেয়ার তৈরি করা হয়েছে যা ইনপুটের সাথে একটি স্কেল ফ্যাক্টর গুণ করবে।
  • __init__() মেথডে স্কেল ফ্যাক্টর প্রদান করা হচ্ছে, এবং এটি ডিফল্টভাবে 1.0 থাকে।
  • call() মেথডে ইনপুটের উপর স্কেলিং অপারেশন করা হচ্ছে।

ধাপ ২: কাস্টম লেয়ার ব্যবহার করা

এখন আমরা এই কাস্টম লেয়ারটি একটি মডেলে ব্যবহার করতে পারি, যেমন অন্য কোনও লেয়ার।

উদাহরণ ২: কাস্টম লেয়ার দিয়ে মডেল তৈরি করা

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# কাস্টম লেয়ার দিয়ে একটি মডেল তৈরি করা
model = Sequential([
    Dense(64, activation='relu', input_shape=(8,)),
    CustomScalingLayer(scale_factor=2.0),  # আমাদের কাস্টম লেয়ার
    Dense(1, activation='sigmoid')  # আউটপুট লেয়ার
])

# মডেল সারাংশ
model.summary()

এখানে:

  • প্রথমে একটি Dense Layer যোগ করা হয়েছে যা 64 নোডের একটি পূর্ণসংখ্যায় লেয়ার।
  • তার পর CustomScalingLayer যোগ করা হয়েছে, যেখানে ইনপুটকে স্কেল ফ্যাক্টর 2.0 দিয়ে গুণ করা হবে।
  • শেষ লেয়ারে একটি আউটপুট লেয়ার রয়েছে যা sigmoid অ্যাক্টিভেশন ফাংশন ব্যবহার করে বাইনারি ক্লাসিফিকেশন করবে।

ধাপ ৩: কাস্টম লেয়ার ট্রেনিং করা

মডেল তৈরি করার পর, এটি ট্রেনিং করা যেতে পারে। কাস্টম লেয়ার ট্রেনিং করার জন্য, অন্যান্য লেয়ারের মতোই compile() এবং fit() ফাংশন ব্যবহার করতে হবে।

উদাহরণ ৩: মডেল কম্পাইল এবং ট্রেনিং করা

import numpy as np

# ডামি ডেটা তৈরি করা
X_train = np.random.rand(100, 8)  # 100 উদাহরণ, 8 ইনপুট ফিচার
y_train = np.random.randint(0, 2, 100)  # 100 বাইনারি লেবেল

# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# মডেল প্রশিক্ষণ
model.fit(X_train, y_train, epochs=10, batch_size=32)

এখানে:

  • মডেলটি Adam optimizer এবং binary_crossentropy লস ফাংশন দিয়ে কম্পাইল করা হয়েছে।
  • model.fit() দিয়ে মডেলকে ১০ এপকস পর্যন্ত ট্রেনিং দেওয়া হচ্ছে।

ধাপ ৪: কাস্টম লেয়ার ট্র্যাকিং ও ওয়েটস

যেহেতু কাস্টম লেয়ারটি Layer ক্লাস থেকে ইনহেরিট করেছে, তাই এটি ওয়েটস ট্র্যাক করে এবং প্রশিক্ষণ চলাকালীন তাদের আপডেট করবে। আপনি যদি কাস্টম ওয়েটস ব্যবহার করতে চান তবে add_weight() মেথড ব্যবহার করতে পারেন।

উদাহরণ ৪: কাস্টম ওয়েট ব্যবহার করা

class CustomLayerWithWeights(tf.keras.layers.Layer):
    def __init__(self, units=1):
        super(CustomLayerWithWeights, self).__init__()
        self.units = units

    def build(self, input_shape):
        # ওয়েট ইনিশিয়ালাইজ করা
        self.kernel = self.add_weight(name='kernel',
                                      shape=(input_shape[1], self.units),
                                      initializer='random_normal')

    def call(self, inputs):
        return tf.matmul(inputs, self.kernel)  # ইনপুট এবং কাস্টম ওয়েটের গুণফল

এখানে:

  • build() মেথডে add_weight() ব্যবহার করে কাস্টম ওয়েট তৈরি করা হয়েছে, যা ইনপুট সাইজ অনুযায়ী ইনিশিয়ালাইজ হবে।
  • call() মেথডে ইনপুট এবং ওয়েটের গুণফল করা হচ্ছে।

সারাংশ

  • Custom Layer তৈরি করার মাধ্যমে আপনি আপনার বিশেষ প্রয়োজন অনুযায়ী কাস্টম ফাংশনালিটি বা লজিক যোগ করতে পারেন যা স্ট্যান্ডার্ড Keras লেয়ারগুলির মধ্যে নেই।
  • Keras এ কাস্টম লেয়ার তৈরি করতে tf.keras.layers.Layer ক্লাস ইনহেরিট করতে হয় এবং __init__()call() মেথডে লেয়ারের আচরণ নির্ধারণ করতে হয়।
  • আপনি কাস্টম লেয়ার তৈরি করে মডেল তৈরি, প্রশিক্ষণ এবং কাস্টম ওয়েটস ট্র্যাক করতে পারবেন, যা আপনার মডেলের কার্যকারিতা বৃদ্ধি করবে।

Keras এর কাস্টম লেয়ার ব্যবহার করে ডীপ লার্নিং মডেলগুলিতে বিভিন্ন ধরনের কাস্টম ফিচার এবং অপারেশন যুক্ত করা সম্ভব, যা মডেলটিকে আরও শক্তিশালী এবং নমনীয় করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...