आवधिक चेकपॉइंटिंग: हर N एपोक पर वेट्स सेव करें
ModelCheckpoint के save_freq पैरामीटर से बैच/एपोक आवृत्ति नियंत्रित करें।
कोड उदाहरण
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
# हर 4 एपोक पर सेव करने के लिए कॉन्फ़िगर करें
batch_size = 32
checkpoint_path = "training_2/cp-{epoch:04d}.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
os.makedirs(checkpoint_dir, exist_ok=True)
# save_freq = 4 एपोक × बैच_साइज = 4 * 32 = 128 बैच
cp_callback = ModelCheckpoint(
filepath=checkpoint_path,
verbose=1,
save_weights_only=True,
save_freq=4 * batch_size # हर 4 एपोक (बैच-आधारित गणना)
)
print("कॉलबैक बनाया गया: हर 4 एपोक पर वेट्स सेव करेगा")
model = create_model()
# एपोक 0 पर प्रारंभिक वेट्स सेव करें
model.save_weights(checkpoint_path.format(epoch=0))
print(f"प्रारंभिक वेट्स सेव किए गए: {checkpoint_path.format(epoch=0)}")
# प्रशिक्षण (मान लें)
# model.fit(train_images, train_labels, epochs=50, callbacks=[cp_callback])
आउटपुट
कॉलबैक बनाया गया: हर 4 एपोक पर वेट्स सेव करेगा प्रारंभिक वेट्स सेव किए गए: training_2/cp-0000.ckpt
save_freq गणना
save_freq='epoch'— हर एपोक के अंत में।save_freq=N(int) — हर N **बैच**।- हर K एपोक के लिए:
save_freq = K * batch_size।
अद्वितीय चेकपॉइंट नाम
{epoch:04d} प्लेसहोल्डर से प्रत्येक चेकपॉइंट का अद्वितीय नाम होता है (cp-0004.ckpt, cp-0008.ckpt, ...), जिससे ओवरराइट नहीं होता।
अन्य कॉलबैक विकल्प
| कॉलबैक | उपयोग |
|---|---|
EarlyStopping | सुधार न होने पर प्रशिक्षण रोकें |
ReduceLROnPlateau | लर्निंग रेट घटाएं |
TensorBoard | लॉग विज़ुअलाइज़ेशन |
CSVLogger | मेट्रिक्स CSV में लॉग करें |
LearningRateScheduler | कस्टम LR शेड्यूल |