Callbacks কী এবং কিভাবে কাজ করে?

Keras তে Callbacks এবং Early Stopping - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

421

Callbacks হল এমন ফাংশন বা মেথড যা একটি নির্দিষ্ট ইভেন্ট বা শর্ত পূর্ণ হলে কল (বা চালানো) হয়। Keras-এ, Callbacks মূলত training প্রক্রিয়ার সময় নির্দিষ্ট পয়েন্টে কিছু কার্যকরী কাজ সম্পাদন করার জন্য ব্যবহৃত হয়। এগুলি বিশেষত মডেল প্রশিক্ষণের সময় কিছু অতিরিক্ত কার্যকলাপ যেমন early stopping, learning rate adjustment, model saving, TensorBoard logging, এবং আরও অনেক কিছু পরিচালনা করতে ব্যবহৃত হয়।

Keras-এ Callbacks গুলি সহজে ট্রেইনিং প্রক্রিয়া এবং বিভিন্ন ইভেন্টের উপর ভিত্তি করে সংযুক্ত করা যেতে পারে, যা মডেল প্রশিক্ষণ এবং মডেল উন্নত করার জন্য সহায়ক।

Callbacks এর প্রধান ব্যবহার

  1. Early Stopping: প্রশিক্ষণ চলাকালীন যদি মডেলটির পারফরম্যান্স উন্নতি না হয় (যেমন, ভ্যালিডেশন লস কমতে না থাকে), তখন প্রশিক্ষণ থামানোর জন্য early stopping ব্যবহার করা হয়।
  2. Model Checkpointing: প্রশিক্ষণ চলাকালীন সেরা মডেল সংরক্ষণ করার জন্য model checkpoint ব্যবহার করা হয়।
  3. Learning Rate Scheduling: প্রশিক্ষণের সময় লার্নিং রেট পরিবর্তন করতে learning rate scheduler ব্যবহার করা হয়।
  4. TensorBoard Logging: প্রশিক্ষণ চলাকালীন TensorBoard লগিং পরিচালনা করার জন্য TensorBoard callback ব্যবহার করা হয়।

Keras-এ Callback এর কাজ

Callbacks-এ ব্যবহৃত কিছু সাধারণ ফাংশনালিটি নিচে দেওয়া হলো:

  1. on_epoch_end(epoch, logs=None): প্রতি epoch শেষে কল করা হয়। এটি প্রশিক্ষণ চলাকালীন কিছু নির্দিষ্ট কাজ করার জন্য ব্যবহৃত হতে পারে, যেমন ভ্যালিডেশন স্কোর বা লস লগ করা।
  2. on_batch_end(batch, logs=None): প্রতি batch শেষে কল করা হয়। এতে প্রশিক্ষণ চলাকালীন batch ভিত্তিক কার্যকলাপ পরিচালনা করা যেতে পারে।
  3. on_train_end(logs=None): প্রশিক্ষণ শেষ হলে কল করা হয়।
  4. on_train_begin(logs=None): প্রশিক্ষণ শুরু হওয়ার সময় কল করা হয়।

Callback এর সাধারণ উদাহরণ

এখানে EarlyStopping এবং ModelCheckpoint Callback এর ব্যবহার দেখানো হয়েছে:

১. EarlyStopping Callback

EarlyStopping ব্যবহার করে আপনি মডেল ট্রেনিং চলাকালীন যদি কোন নির্দিষ্ট সময়ে ভ্যালিডেশন লস বা মেট্রিক উন্নতি না করে, তবে প্রশিক্ষণ থামাতে পারেন।

from keras.callbacks import EarlyStopping

# EarlyStopping callback সেট করা
early_stopping = EarlyStopping(monitor='val_loss', patience=3)

# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=100, validation_data=(x_val, y_val), callbacks=[early_stopping])

এখানে:

  • monitor: আপনি কোন মেট্রিক ট্র্যাক করতে চান (যেমন, val_loss বা val_accuracy).
  • patience: এই মানটি নির্ধারণ করে কতো epochs পরবর্তী পর্যায়ে প্রশিক্ষণ থামবে যদি মেট্রিকটি উন্নতি না করে।

২. ModelCheckpoint Callback

ModelCheckpoint ব্যবহার করে আপনি প্রশিক্ষণ চলাকালীন সেরা মডেল সেভ করতে পারেন। এর মাধ্যমে আপনি একটি মডেল সংরক্ষণ করতে পারবেন যা সর্বোচ্চ পারফরম্যান্স অর্জন করেছে।

from keras.callbacks import ModelCheckpoint

# ModelCheckpoint callback সেট করা
checkpoint = ModelCheckpoint('best_model.h5', monitor='val_loss', save_best_only=True)

# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=100, validation_data=(x_val, y_val), callbacks=[checkpoint])

এখানে:

  • save_best_only=True: এটি কেবলমাত্র সেরা মডেল সংরক্ষণ করবে।
  • monitor: এটি বলে যে কিসের ভিত্তিতে মডেল সেভ করা হবে (যেমন val_loss বা val_accuracy).

৩. Learning Rate Scheduler Callback

Learning Rate Scheduler ব্যবহার করে প্রশিক্ষণের সময় লার্নিং রেট পরিবর্তন করা যায়, যাতে মডেল আরও দ্রুত শিখতে পারে।

from keras.callbacks import LearningRateScheduler

# Learning rate function
def scheduler(epoch, lr):
    if epoch % 10 == 0 and epoch > 0:
        lr = lr * 0.1
    return lr

# LearningRateScheduler callback সেট করা
lr_scheduler = LearningRateScheduler(scheduler)

# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=100, validation_data=(x_val, y_val), callbacks=[lr_scheduler])

এখানে:

  • scheduler: এটি একটি ফাংশন যা প্রতি epoch শেষে লার্নিং রেট পরিবর্তন করবে।
  • lr: এটি বর্তমান লার্নিং রেট, যা ফাংশনটি নিয়ন্ত্রণ করবে।

৪. TensorBoard Callback

TensorBoard হল একটি টুল যা মডেল প্রশিক্ষণ চলাকালীন লগিং তথ্য দেখতে ব্যবহৃত হয়। Keras-এর TensorBoard Callback ব্যবহারের মাধ্যমে আপনি প্রশিক্ষণ চলাকালীন মেট্রিক্স এবং গ্রাফ দেখতে পারবেন।

from keras.callbacks import TensorBoard

# TensorBoard callback সেট করা
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=1)

# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=100, validation_data=(x_val, y_val), callbacks=[tensorboard])

এখানে:

  • log_dir: এটি সেই ডিরেক্টরি যেখানে TensorBoard লগ সংরক্ষিত হবে।
  • histogram_freq=1: এটি ইন্ডিকেট করে যে, প্রতিটি epoch শেষে মেট্রিক্সের হিস্টোগ্রাম লগ করা হবে।

Callbacks ব্যবহার করার সুবিধা

  1. Automation: Callbacks আপনি প্রশিক্ষণ প্রক্রিয়া অটোমেট করতে সাহায্য করে, যেমন মডেল সেভ করা, লার্নিং রেট পরিবর্তন করা, বা প্রশিক্ষণ থামানো।
  2. Model Optimization: Callbacks মডেল ট্রেনিংকে অপটিমাইজ করতে সহায়ক, যেমন early stopping ব্যবহার করে overfitting রোধ করা।
  3. Monitoring: প্রশিক্ষণ চলাকালীন TensorBoard বা অন্যান্য লগিং ফিচার ব্যবহার করে আপনি মডেলের কর্মক্ষমতা ট্র্যাক করতে পারেন।
  4. Custom Actions: আপনি প্রশিক্ষণ প্রক্রিয়ার মধ্যে কিছু কাস্টম কাজ করতে পারবেন যেমন কাস্টম মেট্রিক্স পরিমাপ বা ব্যাচে ব্যাচে কিছু কার্যক্রম সম্পাদন করা।

সারাংশ

Callbacks হল এমন ফাংশন যা Keras মডেল ট্রেনিং চলাকালে নির্দিষ্ট ইভেন্ট বা শর্তের উপর ভিত্তি করে কাজ করে। এটি early stopping, model checkpointing, learning rate adjustment, এবং TensorBoard logging এর মতো বিভিন্ন কার্যকলাপ পরিচালনা করতে ব্যবহৃত হয়। Callbacks মডেল প্রশিক্ষণ প্রক্রিয়াকে আরও দক্ষ এবং নিয়ন্ত্রণযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...