TF: TensorFlow save model

From OnnoWiki
Revision as of 10:27, 11 March 2025 by Onnowpurbo (talk | contribs) (Created page with "Menyimpan model TensorFlow yang telah dilatih sangat penting untuk memungkinkan penggunaan kembali, berbagi dengan orang lain, atau deployment ke lingkungan produksi. Berikut...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.


Pranala Menarik