Keras Tuner দিয়ে Hyperparameter Optimization

Hyperparameter Tuning এবং Optimization - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

319

Keras Tuner হল একটি ওপেন সোর্স লাইব্রেরি যা মডেলের hyperparameter optimization বা hyperparameter tuning সহজ করে। এটি একটি অত্যন্ত কার্যকরী টুল, যা ডীপ লার্নিং মডেলের পারফরম্যান্স উন্নত করতে সহায়ক, বিশেষ করে যখন আপনি নির্দিষ্ট হাইপারপারামিটারগুলি যেমন লার্নিং রেট, ব্যাচ সাইজ, বা লেয়ারের সংখ্যা ইত্যাদি ঠিক করতে চান।

Hyperparameter optimization হল এমন একটি প্রক্রিয়া, যেখানে মডেলের পারফরম্যান্স সর্বোচ্চ করার জন্য উপযুক্ত হাইপারপারামিটারগুলো খুঁজে বের করা হয়। Keras Tuner এর মাধ্যমে এই প্রক্রিয়াটি খুব সহজেই করা যেতে পারে।

Keras Tuner এর ব্যবহার

Keras Tuner এর মাধ্যমে আপনি বিভিন্ন অপটিমাইজেশন কৌশল ব্যবহার করতে পারেন, যেমন Random Search, Hyperband, এবং Bayesian Optimization

Keras Tuner Setup

প্রথমে Keras Tuner ইনস্টল করতে হবে:

pip install keras-tuner

১. Keras Tuner এর মাধ্যমে Hyperparameter Optimization এর স্টেপ

১.1. একটি মডেল তৈরি করা

Keras Tuner এ hyperparameter optimization করার জন্য একটি কাস্টম মডেল ফাংশন তৈরি করতে হয়, যেখানে আপনি হাইপারপারামিটারগুলোকে নির্দিষ্ট করে দেন।

ধরা যাক, একটি সিম্পল নিউরাল নেটওয়ার্ক মডেল তৈরি করছি:

import keras
from keras import layers
from keras.models import Sequential
from keras_tuner import HyperModel

class MyHyperModel(HyperModel):
    def build(self, hp):
        model = Sequential()
        
        # First hidden layer
        model.add(layers.Dense(
            units=hp.Int('units', min_value=32, max_value=512, step=32),
            activation='relu',
            input_shape=(x_train.shape[1],)
        ))

        # Second hidden layer
        model.add(layers.Dense(
            units=hp.Int('units_2', min_value=32, max_value=512, step=32),
            activation='relu'
        ))

        # Output layer
        model.add(layers.Dense(10, activation='softmax'))  # Assuming 10 output classes

        # Compile the model
        model.compile(
            optimizer=keras.optimizers.Adam(
                learning_rate=hp.Float('learning_rate', min_value=1e-5, max_value=1e-2, sampling='log')
            ),
            loss='categorical_crossentropy',
            metrics=['accuracy']
        )
        return model

এখানে hp.Int এবং hp.Float ব্যবহার করে আমরা বিভিন্ন হাইপারপারামিটার প্যারামিটারাইজ করেছি। units এবং learning_rate এর মতো হাইপারপারামিটারগুলো আমরা কাস্টমাইজ করেছি, যাতে আমাদের মডেলটি অপ্টিমাইজড হতে পারে।

১.2. Keras Tuner সেটআপ এবং হাইপারপারামিটার অনুসন্ধান

Keras Tuner এ Hyperband অথবা RandomSearch ব্যবহার করে আপনি হাইপারপারামিটার অনুসন্ধান চালাতে পারেন।

from keras_tuner import Hyperband

# Create tuner
tuner = Hyperband(
    MyHyperModel(),
    objective='val_accuracy',
    max_epochs=10,
    factor=3,
    directory='my_dir',
    project_name='hyperparameter_tuning'
)

# Search for the best hyperparameters
tuner.search(x_train, y_train, epochs=10, validation_data=(x_val, y_val))
  • objective: এখানে 'val_accuracy' ব্যবহার করা হয়েছে, কারণ আমরা ভ্যালিডেশন একুরেসি অপটিমাইজ করতে চাই।
  • max_epochs: ট্রেনিংয়ের জন্য মোট ইপোকসের সংখ্যা।
  • factor: এই প্যারামিটারটি ব্যবহার করে Hyperband এর দ্রুততা নিয়ন্ত্রণ করা হয়।

১.3. সেরা হাইপারপারামিটারগুলো পেতে

টিউনিং শেষ হওয়ার পর, আপনি সেরা হাইপারপারামিটারগুলো পেতে পারেন:

best_hps = tuner.get_best_hyperparameters(num_trials=1)[0]
print(f'Best learning rate: {best_hps.get("learning_rate")}')
print(f'Best units: {best_hps.get("units")}')

এতে আপনি সেরা learning rate এবং units এর মান দেখতে পাবেন যা মডেলের জন্য সবচেয়ে ভালো কাজ করেছে।

১.4. সেরা মডেলটি ট্রেনিং করা

একবার সেরা হাইপারপারামিটার পেলে, আপনি সেগুলো দিয়ে নতুন মডেল তৈরি এবং প্রশিক্ষণ দিতে পারেন:

# Build the model with the best hyperparameters
model = tuner.hypermodel.build(best_hps)

# Train the model
model.fit(x_train, y_train, epochs=10, validation_data=(x_val, y_val))

এখানে, tuner.hypermodel.build(best_hps) ব্যবহার করা হয়েছে, যাতে সেরা হাইপারপারামিটার ব্যবহার করে মডেলটি তৈরি করা হয়।

২. অন্যান্য কৌশল: RandomSearch, Bayesian Optimization

২.1. Random Search

Random Search হল একটি সহজ পদ্ধতি যেখানে র্যান্ডমভাবে বিভিন্ন হাইপারপারামিটার সংমিশ্রণ চেষ্টা করা হয়।

from keras_tuner import RandomSearch

tuner = RandomSearch(
    MyHyperModel(),
    objective='val_accuracy',
    max_trials=5,
    executions_per_trial=3,
    directory='my_dir',
    project_name='random_search_tuning'
)

২.2. Bayesian Optimization

Bayesian Optimization কৌশলটি অধিক স্মার্ট, কারণ এটি পূর্ববর্তী ট্রায়াল থেকে শিখে পরবর্তী ট্রায়ালকে অপ্টিমাইজ করে।

from keras_tuner import BayesianOptimization

tuner = BayesianOptimization(
    MyHyperModel(),
    objective='val_accuracy',
    max_trials=5,
    directory='my_dir',
    project_name='bayesian_optimization_tuning'
)

সারাংশ

Keras Tuner দিয়ে hyperparameter optimization ডীপ লার্নিং মডেলের পারফরম্যান্স উন্নত করতে খুবই কার্যকরী টুল। এতে Hyperband, RandomSearch, এবং Bayesian Optimization কৌশল ব্যবহার করে আপনি বিভিন্ন হাইপারপারামিটার পরীক্ষা করে সেরা মডেল তৈরি করতে পারেন। Keras Tuner ব্যবহার করা খুবই সহজ এবং এটি মডেল ট্রেনিং সময় খুবই সাহায্যকারী।

Content added By
Promotion

Are you sure to start over?

Loading...