ModelCheckpoint कॉलबैक बनाना और उपयोग करना
प्रशिक्षण के दौरान मॉडल वेट्स को स्वचालित रूप से सेव करने के लिए कॉलबैक कॉन्फ़िगर करें।
कोड उदाहरण
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.callbacks import ModelCheckpoint
import os
def create_model():
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=(784,)),
layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return model
# चेकपॉइंट पथ सेट करें
checkpoint_path = "training_1/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
os.makedirs(checkpoint_dir, exist_ok=True)
# कॉलबैक बनाएं: हर एपोक पर वेट्स सेव करें
cp_callback = ModelCheckpoint(
filepath=checkpoint_path,
save_weights_only=True,
verbose=1
)
print("नए कॉलबैक के साथ मॉडल प्रशिक्षित किया जा रहा है...")
model = create_model()
history = model.fit(
train_images, train_labels,
epochs=10,
validation_data=(test_images, test_labels),
callbacks=[cp_callback],
verbose=0
)
# चेकपॉइंट डायरेक्टरी सामग्री
print("चेकपॉइंट डायरेक्टरी:")
for f in os.listdir(checkpoint_dir):
print(f" {f}")
आउटपुट
नए कॉलबैक के साथ मॉडल प्रशिक्षित किया जा रहा है... Epoch 1: saving model to training_1/cp.ckpt Epoch 2: saving model to training_1/cp.ckpt ... Epoch 10: saving model to training_1/cp.ckpt चेकपॉइंट डायरेक्टरी: cp.ckpt.data-00000-of-00001 cp.ckpt.index
कॉलबैक कैसे काम करता है
- प्रशिक्षण शुरू —
fit()कॉल। - हर एपोक अंत — कॉलबैक का
on_epoch_endट्रिगर होता है। - वेट्स सेव —
model.save_weights(filepath)आंतरिक रूप से कॉल होता है। - ओवरराइट — समान फाइलनाम होने पर पिछला चेकपॉइंट ओवरराइट होता है (यदि
save_best_only=False)।
उपयोग के लाभ
- प्रशिक्षण बाधित होने पर पुनः शुरू कर सकते हैं (नवीनतम चेकपॉइंट से)।
- सर्वश्रेष्ठ मॉडल स्वचालित रूप से रख सकते हैं (
save_best_only=True)। - लंबे प्रशिक्षण में प्रगति सुरक्षित रहती है।
- फाइन-ट्यूनिंग/ट्रांसफर लर्निंग के लिए वेट्स उपलब्ध।
पुनः लोड करना
# नवीनतम चेकपॉइंट से
latest = tf.train.latest_checkpoint(checkpoint_dir)
model = create_model()
model.load_weights(latest)
# या सर्वश्रेष्ठ मॉडल (यदि save_best_only=True)
model = create_model()
model.load_weights('best_model.h5')