Callbacks হল সেই ফাংশন বা অবজেক্ট যা মডেল প্রশিক্ষণ বা মূল্যায়ন প্রক্রিয়ার সময় নির্দিষ্ট কিছু ঘটনা বা ইভেন্টে কার্যকর হয়। Keras এ Callbacks ব্যবহার করে আপনি মডেল প্রশিক্ষণের প্রক্রিয়ায় বিভিন্ন পর্যায়ে ফাংশন বা কোড চালাতে পারেন, যেমন: প্রশিক্ষণ পর্বের শেষে, প্রতি ব্যাচের শেষে, বা প্রশিক্ষণ পুরোপুরি শেষ হওয়ার পরে।
Keras এ Custom Callbacks তৈরি করা খুবই সহজ এবং এটি আপনাকে প্রশিক্ষণের প্রক্রিয়া কাস্টমাইজ করতে সাহায্য করে।
Keras Callback কী?
Keras Callback হল একটি Python ক্লাস যা tf.keras.callbacks.Callback ক্লাস থেকে ইনহেরিট করে। Callback কেবল তখনই কার্যকর হয় যখন নির্দিষ্ট ইভেন্ট ঘটে, যেমন:
- একটি নির্দিষ্ট পর্ব শেষ হলে
- একটি নির্দিষ্ট পর্বের পর ব্যাচ লস পরিবর্তিত হলে
- প্রশিক্ষণ বন্ধ বা পুনরায় শুরু করার সময়
Custom Callback তৈরি করা
Keras এ একটি Custom Callback তৈরি করতে হলে আপনাকে tf.keras.callbacks.Callback ক্লাসটি ইনহেরিট করতে হবে এবং on_epoch_end, on_batch_end, on_train_end, ইত্যাদি মেথডগুলো কাস্টমাইজ করতে হবে।
নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি কাস্টম Callback তৈরি করা হয়েছে যা প্রতি পর্বের শেষে লস প্রিন্ট করবে এবং নির্দিষ্ট লস মান অর্জিত হলে প্রশিক্ষণ বন্ধ করবে:
১. Custom Callback উদাহরণ:
import tensorflow as tf
from tensorflow.keras.callbacks import Callback
class CustomCallback(Callback):
def __init__(self, patience=2, target_loss=0.1):
super(CustomCallback, self).__init__()
self.patience = patience # প্রশিক্ষণের সময় পরবর্তী ধাপে লস স্ট্যাগনেশন সহ্য করার পরিমাণ
self.target_loss = target_loss # লক্ষ্য লস
self.wait = 0 # কত পর্বের জন্য স্ট্যাগনেশন ঘটেছে
# প্রতি পর্ব শেষে কল হবে
def on_epoch_end(self, epoch, logs=None):
loss = logs.get('loss')
print(f"Epoch {epoch+1}: loss = {loss:.4f}")
# যদি লক্ষ্য লস পেয়ে যায়, প্রশিক্ষণ বন্ধ করে দেয়া
if loss <= self.target_loss:
print(f"Target loss of {self.target_loss} reached. Stopping training.")
self.model.stop_training = True
# যদি লসের উন্নতি না হয়
if loss > self.target_loss:
self.wait += 1
if self.wait >= self.patience:
print(f"Training stopped after {self.patience} epochs with no improvement.")
self.model.stop_training = True
else:
self.wait = 0
২. Callback ব্যবহার করা:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
# ডেটা তৈরি করা
X_train = np.random.rand(100, 10)
y_train = np.random.randint(0, 2, 100)
# মডেল তৈরি
model = Sequential([
Dense(64, activation='relu', input_dim=10),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# CustomCallback তৈরি এবং প্রশিক্ষণে ব্যবহার
custom_callback = CustomCallback(patience=3, target_loss=0.2)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train, epochs=10, batch_size=32, callbacks=[custom_callback])
এই উদাহরণে, CustomCallback প্রতি পর্ব শেষে লস মুদ্রণ করে এবং যদি লস লক্ষ্য মানে পৌঁছায় বা স্ট্যাগনেট হয়ে যায়, তাহলে প্রশিক্ষণ বন্ধ করে দেয়।
Keras এ Callbacks এর মেথড
Keras এ Callbacks মেথডগুলোর মধ্যে কিছু জনপ্রিয় মেথড উল্লেখযোগ্য:
- on_epoch_end(epoch, logs=None):
- প্রতিটি পর্ব শেষে এই মেথডটি কল হয়। এখানে
logsহলো একটি ডিকশনারি যা পর্বের শেষে লস, একিউরেসি ইত্যাদি ধারণ করে।
- প্রতিটি পর্ব শেষে এই মেথডটি কল হয়। এখানে
- on_batch_end(batch, logs=None):
- প্রতি ব্যাচের পর এই মেথডটি কল হয়। এটি ব্যাচের শেষে কিছু কার্যক্রম করতে সাহায্য করে।
- on_train_end(logs=None):
- প্রশিক্ষণ শেষে এই মেথডটি কল হয়। এটি প্রশিক্ষণ শেষ হলে কিছু কার্যক্রম বা রিপোর্ট তৈরি করতে ব্যবহৃত হয়।
- on_train_begin(logs=None):
- প্রশিক্ষণ শুরু হওয়ার সময় এই মেথডটি কল হয়। এটি সাধারণত প্রশিক্ষণের প্রাথমিক প্রস্তুতির জন্য ব্যবহৃত হয়।
- on_epoch_begin(epoch, logs=None):
- প্রতিটি পর্ব শুরু হওয়ার সময় এই মেথডটি কল হয়।
Callbacks কাস্টমাইজেশন এবং ব্যবহারের উদাহরণ
৩. ModelCheckpoint Callback
একটি সাধারণ Callback উদাহরণ হল ModelCheckpoint, যা মডেল প্রশিক্ষণের সময় প্রতি পর্বের শেষে মডেল সংরক্ষণ করে।
from tensorflow.keras.callbacks import ModelCheckpoint
# ModelCheckpoint Callback
checkpoint = ModelCheckpoint('best_model.h5', monitor='loss', save_best_only=True)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train, epochs=10, batch_size=32, callbacks=[checkpoint])
এই Callback প্রতিটি পর্বের শেষে মডেল ফাইল সংরক্ষণ করবে, এবং শুধু তখনই সংরক্ষণ করবে যখন লস কমে যাবে।
৪. EarlyStopping Callback
EarlyStopping Callback প্রশিক্ষণকে খুব দ্রুত বন্ধ করে দেয় যদি একাধিক পর্বে মডেলের কার্যকারিতা উন্নতি না হয়।
from tensorflow.keras.callbacks import EarlyStopping
# EarlyStopping Callback
early_stopping = EarlyStopping(monitor='val_loss', patience=3)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train, epochs=10, validation_data=(X_val, y_val), callbacks=[early_stopping])
এটি প্রশিক্ষণ বন্ধ করে দিবে যদি তিনটি পর্বে val_loss এর উন্নতি না হয়।
সারাংশ
Custom Callbacks Keras এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা আপনাকে প্রশিক্ষণ প্রক্রিয়াকে কাস্টমাইজ করতে সাহায্য করে। আপনি Callback মেথডগুলি যেমন on_epoch_end, on_batch_end, on_train_end ইত্যাদি কাস্টমাইজ করে প্রশিক্ষণ প্রক্রিয়ার বিভিন্ন পর্যায়ে ফাংশন বা কোড চালাতে পারেন। এতে আপনি মডেল সংরক্ষণ, শিক্ষার হার কাস্টমাইজ করা, বা প্রশিক্ষণ বন্ধ করা ইত্যাদি কার্যক্রম করতে পারেন। Keras এ উপলব্ধ অন্যান্য প্রাক-নির্ধারিত Callback যেমন ModelCheckpoint, EarlyStopping এর মাধ্যমে আপনি মডেল উন্নত এবং দ্রুত প্রশিক্ষণ করতে পারেন।
Read more