केवल वेट्स सेव/लोड करना
कभी-कभी केवल मॉडल के वेट्स (weights) सेव करना चाहते हैं, पूरी आर्किटेक्चर नहीं। इसके लिए save_weights() और load_weights() उपयोग करें।
कोड उदाहरण
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
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
# मॉडल बनाएं और प्रशिक्षित करें (मान लें)
model = create_model()
model.fit(train_images, train_labels, epochs=5, verbose=0)
# केवल वेट्स सेव करें (चेकपॉइंट फॉर्मेट)
os.makedirs('checkpoints', exist_ok=True)
checkpoint_path = './checkpoints/my_checkpoint'
model.save_weights(checkpoint_path)
print("वेट्स सेव किए गए:", checkpoint_path)
# नया मॉडल इंस्टेंस बनाएं (समान आर्किटेक्चर आवश्यक)
model2 = create_model()
# वेट्स लोड करें
model2.load_weights(checkpoint_path)
print("पुराने मॉडल के वेट्स रिस्टोर किए गए")
# मूल्यांकन करें
loss, acc = model2.evaluate(test_images, test_labels, verbose=2)
print(f"रिस्टोर्ड मॉडल एक्यूरेसी: {100 * acc:.2f}%")
आउटपुट
वेट्स सेव किए गए: ./checkpoints/my_checkpoint पुराने मॉडल के वेट्स रिस्टोर किए गए रिस्टोर्ड मॉडल एक्यूरेसी: 97.40%
वेट्स फॉर्मेट्स
| फॉर्मेट | एक्सटेंशन | विवरण |
|---|---|---|
| TensorFlow चेकपॉइंट | .ckpt (डिफ़ॉल्ट) | बाइनरी, TF नेमस्पेस के साथ |
| HDF5 | .h5 / .weights.h5 | पोर्टेबल, Keras 2.x स्टाइल |
निर्दिष्ट फॉर्मेट: model.save_weights('weights.h5', save_format='h5')
महत्वपूर्ण आवश्यकताएं
- लोड करते समय **समान आर्किटेक्चर** (लेयर क्रम, आकार, नाम) होना चाहिए।
- आर्किटेक्चर मिसमैच पर
ValueErrorउठता है। - आर्किटेक्चर सेव नहीं होता — केवल वेट्स मान।
उपयोग के मामले
- फाइन-ट्यूनिंग: प्री-ट्रेन्ड वेट्स लोड करें।
- ट्रांसफर लर्निंग: बैकबोन वेट्स कॉपी करें।
- चेकपॉइंटिंग: प्रशिक्षण के दौरान आवधिक सेव।
- हल्का वजन: केवल वेट्स फाइलें (कोई ग्राफ/कॉन्फ़िग नहीं)।