Keras এ ModelCheckpoint এবং EarlyStopping হল দুটি অত্যন্ত কার্যকরী কলব্যাক, যা মডেল প্রশিক্ষণের সময় অতিরিক্ত প্রশিক্ষণ বা অপর্যাপ্ত প্রশিক্ষণ সমস্যা এড়াতে সহায়ক। এই দুটি কলব্যাক প্রশিক্ষণের গতি বাড়ানোর পাশাপাশি মডেলের কার্যকারিতা উন্নত করতে সাহায্য করে।
১. ModelCheckpoint
ModelCheckpoint কলব্যাকটি ব্যবহার করা হয় প্রশিক্ষণের সময় মডেলের সর্বোচ্চ কার্যকারিতা (validation accuracy বা loss) অনুসারে সেরা মডেল সেভ (save) করার জন্য। এটি best model সংরক্ষণ করতে সহায়ক, যাতে আপনি প্রশিক্ষণ শেষে সর্বোত্তম মডেল ব্যবহার করতে পারেন।
ব্যবহারের উদ্দেশ্য:
- প্রশিক্ষণের পরে সেরা মডেলটি সেভ করা।
- EarlyStopping এর সাথে ব্যবহৃত হলে, মডেল যখন আর উন্নতি করতে পারে না, তখন সেরা মডেল সংরক্ষণ করা।
উদাহরণ:
from tensorflow.keras.callbacks import ModelCheckpoint
# ModelCheckpoint কলব্যাক সেটআপ
checkpoint = ModelCheckpoint('best_model.h5',
monitor='val_loss', # কোন মেট্রিকটি মনিটর করা হবে
save_best_only=True, # সর্বোচ্চ পারফরম্যান্সের মডেল সেভ হবে
mode='min', # min হলে val_loss কম হলে সেভ হবে
verbose=1) # প্রশিক্ষণের সময় লগ দেখাবে
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train,
epochs=20,
validation_data=(X_val, y_val),
callbacks=[checkpoint])
মূল প্যারামিটারসমূহ:
- monitor: কোন মেট্রিক (যেমন:
val_loss,val_accuracy) পর্যবেক্ষণ করা হবে। - save_best_only: যদি
Trueহয়, শুধুমাত্র সবচেয়ে ভাল মেট্রিক পেতে মডেলটি সেভ হবে। - mode: এটি নির্দেশ করে কিভাবে মেট্রিকটি পর্যবেক্ষণ করা হবে।
minহলে ছোট মান (যেমনval_loss) সেরা হবে,maxহলে বড় মান (যেমনaccuracy) সেরা হবে। - verbose: লগ দেখতে চাওয়া।
1দিলে প্রশিক্ষণের সময় কিছু তথ্য দেখাবে।
২. EarlyStopping
EarlyStopping কলব্যাকটি প্রশিক্ষণ চলাকালীন মডেলের overfitting (অতিরিক্ত প্রশিক্ষণ) বা underfitting (অপর্যাপ্ত প্রশিক্ষণ) রোধ করতে সাহায্য করে। এটি validation loss বা validation accuracy এর ভিত্তিতে প্রশিক্ষণ থামিয়ে দেয়, যদি কয়েকটি ইপোকের মধ্যে উন্নতি না ঘটে।
ব্যবহারের উদ্দেশ্য:
- মডেলকে অতিরিক্ত প্রশিক্ষণ থেকে রক্ষা করা, যাতে overfitting না ঘটে।
- মডেলের কার্যকারিতা স্থিতিশীল থাকলে প্রশিক্ষণ শেষ করা।
উদাহরণ:
from tensorflow.keras.callbacks import EarlyStopping
# EarlyStopping কলব্যাক সেটআপ
early_stopping = EarlyStopping(monitor='val_loss', # কোন মেট্রিকটি মনিটর করা হবে
patience=3, # কত ইপোক পর থামানো হবে যদি কোন উন্নতি না হয়
mode='min', # 'min' হলে val_loss কম হলে থামানো হবে
verbose=1) # প্রশিক্ষণের সময় লগ দেখাবে
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train,
epochs=20,
validation_data=(X_val, y_val),
callbacks=[early_stopping])
মূল প্যারামিটারসমূহ:
- monitor: কোন মেট্রিক (যেমন:
val_loss,val_accuracy) পর্যবেক্ষণ করা হবে। - patience: কত ইপোকের জন্য অপেক্ষা করা হবে যদি কোন উন্নতি না ঘটে। উদাহরণস্বরূপ, যদি
patience=3হয়, তাহলে 3 ইপোক পর্যন্ত যদিval_lossউন্নতি না করে, তখন প্রশিক্ষণ থামানো হবে। - mode: এটি নির্দেশ করে কিভাবে মেট্রিকটি পর্যবেক্ষণ করা হবে।
minহলে, ছোট মান (যেমনval_loss) সেরা হবে,maxহলে বড় মান (যেমনval_accuracy) সেরা হবে। - verbose: প্রশিক্ষণ চলাকালীন লগ দেখতে চান কিনা।
ModelCheckpoint এবং EarlyStopping একত্রে ব্যবহার
এখন, যদি আপনি ModelCheckpoint এবং EarlyStopping একসাথে ব্যবহার করতে চান, তাহলে প্রশিক্ষণের সময় মডেলের সর্বোত্তম পারফরম্যান্স সেভ করতে এবং অতিরিক্ত প্রশিক্ষণ রোধ করতে হবে।
উদাহরণ:
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping
# ModelCheckpoint কলব্যাক
checkpoint = ModelCheckpoint('best_model.h5',
monitor='val_loss',
save_best_only=True,
mode='min',
verbose=1)
# EarlyStopping কলব্যাক
early_stopping = EarlyStopping(monitor='val_loss',
patience=3, # 3 ইপোকের মধ্যে উন্নতি না হলে থামানো হবে
mode='min',
verbose=1)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train,
epochs=20,
validation_data=(X_val, y_val),
callbacks=[checkpoint, early_stopping])
সারাংশ
- ModelCheckpoint: মডেল প্রশিক্ষণ চলাকালীন সর্বোত্তম মেট্রিক অর্জন করা মডেল সেভ করতে ব্যবহৃত হয়।
- EarlyStopping: মডেল প্রশিক্ষণের সময়, যখন কোন উন্নতি না হয়, তখন প্রশিক্ষণ থামিয়ে overfitting রোধ করতে ব্যবহৃত হয়।
এই দুটি কলব্যাক একত্রে ব্যবহার করলে, আপনি একটি optimal মডেল তৈরি করতে পারবেন, যা অতিরিক্ত প্রশিক্ষণ না করেই ভালো পারফরম্যান্স প্রদান করবে।
Read more