TF: TensorFlow save model
Menyimpan model TensorFlow yang telah dilatih sangat penting untuk memungkinkan penggunaan kembali, berbagi dengan orang lain, atau deployment ke lingkungan produksi. Berikut adalah beberapa metode utama untuk menyimpan dan memuat kembali model yang telah dilatih, lengkap dengan contoh implementasi:
1. Menyimpan dan Memuat Bobot Model (Weights Only)
Anda dapat menyimpan hanya bobot (weights) dari model selama atau setelah pelatihan menggunakan `tf.keras.callbacks.ModelCheckpoint`. Ini memungkinkan Anda untuk melanjutkan pelatihan atau melakukan inferensi tanpa harus melatih ulang model dari awal.
Menyimpan Bobot Selama Pelatihan:
import tensorflow as tf from tensorflow.keras.callbacks import ModelCheckpoint # Definisikan model sederhana def create_model(): model = tf.keras.Sequential([ tf.keras.layers.Dense(512, activation='relu', input_shape=(784,)), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10) ]) model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) return model model = create_model() # Tentukan path untuk menyimpan checkpoint checkpoint_path = "training_1/cp.ckpt" checkpoint_dir = os.path.dirname(checkpoint_path) # Buat callback untuk menyimpan bobot model cp_callback = ModelCheckpoint(filepath=checkpoint_path, save_weights_only=True, verbose=1) # Latih model dengan callback model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels), callbacks=[cp_callback])
Memuat Bobot ke Model Baru:
# Buat instance model baru model = create_model() # Muat bobot yang telah disimpan model.load_weights(checkpoint_path) # Evaluasi model loss, acc = model.evaluate(test_images, test_labels, verbose=2) print(f"Model yang dimuat ulang, akurasi: {acc*100:.2f}%")
Dengan pendekatan ini, Anda dapat menyimpan bobot model selama pelatihan dan memuatnya kembali ke model dengan arsitektur yang sama untuk melanjutkan pelatihan atau melakukan evaluasi.
2. Menyimpan dan Memuat Seluruh Model
Menyimpan seluruh model mencakup arsitektur, bobot, dan konfigurasi pelatihan, sehingga memudahkan untuk memuat kembali model tanpa perlu rekonfigurasi.
Menggunakan Format `.keras`:
Format `.keras` adalah format penyimpanan tingkat tinggi yang baru, yang menyediakan penyimpanan berbasis nama yang lebih efisien dan mudah untuk debug.
Menyimpan Model:
# Latih model model = create_model() model.fit(train_images, train_labels, epochs=5) # Simpan seluruh model sebagai arsip `.keras` model.save('my_model.keras')
Memuat Model:
# Muat model yang telah disimpan new_model = tf.keras.models.load_model('my_model.keras') # Tampilkan arsitektur model new_model.summary() # Evaluasi model yang dimuat loss, acc = new_model.evaluate(test_images, test_labels, verbose=2) print(f"Model yang dimuat ulang, akurasi: {acc*100:.2f}%")
Pendekatan ini memungkinkan Anda untuk menyimpan dan memuat kembali seluruh model dengan mudah, termasuk arsitektur, bobot, dan konfigurasi pelatihan.
3. Menyimpan Model dalam Format SavedModel
Format SavedModel adalah format serialisasi default untuk TensorFlow, yang menyimpan arsitektur, bobot, dan informasi lainnya, serta kompatibel dengan TensorFlow Serving.
Menyimpan Model:
# Latih model model = create_model() model.fit(train_images, train_labels, epochs=5) # Simpan model sebagai SavedModel model.save('saved_model/my_model')
Memuat Model:
# Muat model yang telah disimpan new_model = tf.keras.models.load_model('saved_model/my_model') # Tampilkan arsitektur model new_model.summary() # Evaluasi model yang dimuat loss, acc = new_model.evaluate(test_images, test_labels, verbose=2) print(f"Model yang dimuat ulang, akurasi: {acc*100:.2f}%")
Format SavedModel sangat berguna untuk deployment di lingkungan produksi dan kompatibel dengan berbagai alat TensorFlow lainnya.
4. Menyimpan Model dalam Format HDF5
Format HDF5 adalah format penyimpanan lama yang masih didukung untuk kompatibilitas, yang menyimpan arsitektur, bobot, dan konfigurasi pelatihan dalam satu file.
Menyimpan Model:
# Latih model model = create_model() model.fit(train_images, train_labels, epochs=5) # Simpan model ke file HDF5 model.save('my_model.h5')
Memuat Model:
# Muat model yang telah disimpan new_model = tf.keras.models.load_model('my_model.h5') # Tampilkan arsitektur model new_model.summary() # Evaluasi model yang dimuat loss, acc = new_model.evaluate(test_images, test_labels, verbose=2) print(f"Model yang dimuat ulang, akurasi: {acc*100:.2f}%")
Meskipun format HDF5 masih didukung, disarankan untuk menggunakan format `.keras` atau SavedModel untuk fitur dan kompatibilitas yang lebih baik.
5. Menyimpan Model untuk TensorFlow.js
Untuk menggunakan model TensorFlow di aplikasi web, Anda dapat mengonversinya ke format TensorFlow.js.
Mengonversi Model Keras ke TensorFlow.js:
# Instal konverter TensorFlow.js pip install tensorflowjs # Konversi model Keras ke format TensorFlow.js tensorflowjs_converter --input_format keras my_model.h5 /path/to/tfjs_model
Memuat Model di TensorFlow.js:
// Muat model di aplikasi web menggunakan TensorFlow.js const model = await tf.loadLayersModel('/path/to/tfjs_model/model.json'); // Gunakan model untuk prediksi const prediction = model.predict(tf.tensor2d(0.5, 0.5, 0.5, 0.5, [1, 4])); prediction.print();
Dengan mengonversi model ke format TensorFlow.js, Anda dapat menjalankan model langsung di browser, memungkinkan aplikasi web interaktif yang memanfaatkan pembelajaran mesin.