Mengimpor model Keras ke TensorFlow.js

Model Keras (biasanya dibuat melalui API Python) dapat disimpan dalam salah satu dari beberapa format . Format "seluruh model" dapat dikonversi ke format Lapisan TensorFlow.js, yang dapat dimuat langsung ke TensorFlow.js untuk inferensi atau untuk pelatihan lebih lanjut.

Target TensorFlow.js Layers Format adalah direktori yang berisi model.json berkas dan satu set file berat sharded dalam format biner. The model.json file berisi kedua model topologi (alias "arsitektur" atau "grafik": deskripsi dari lapisan dan bagaimana mereka terhubung) dan manifest file berat.

Persyaratan

Prosedur konversi membutuhkan lingkungan Python; Anda mungkin ingin menyimpan satu terisolasi menggunakan pipenv atau virtualenv . Untuk menginstal converter, penggunaan pip install tensorflowjs .

Mengimpor model Keras ke TensorFlow.js adalah proses dua langkah. Pertama, konversi model Keras yang ada ke format Lapisan TF.js, lalu muat ke TensorFlow.js.

Langkah 1. Ubah model Keras yang ada ke format TF.js Layers

Model Keras biasanya disimpan melalui model.save(filepath) , yang menghasilkan satu HDF5 (.h5) file yang mengandung kedua topologi model dan bobot. Untuk mengkonversi file tersebut ke format TF.js Layers, jalankan perintah berikut, di mana path/to/my_model.h5 adalah file dan sumber Keras .h5 path/to/tfjs_target_dir adalah direktori target output untuk file-file TF.js:

# bash

tensorflowjs_converter --input_format keras \
                       path/to/my_model.h5 \
                       path/to/tfjs_target_dir

Alternatif: Gunakan API Python untuk mengekspor langsung ke format Lapisan TF.js

Jika Anda memiliki model Keras dengan Python, Anda dapat mengekspornya langsung ke format Lapisan TensorFlow.js sebagai berikut:

# Python

import tensorflowjs as tfjs

def train(...):
    model = keras.models.Sequential()   # for example
    ...
    model.compile(...)
    model.fit(...)
    tfjs.converters.save_keras_model(model, tfjs_target_dir)

Langkah 2: Muat model ke TensorFlow.js

Gunakan web server untuk melayani file model dikonversi yang Anda buat pada Langkah 1. Perhatikan bahwa Anda mungkin perlu mengkonfigurasi server Anda untuk memungkinkan Cross-Origin Resource Sharing (CORS) , untuk memungkinkan mengambil file dalam JavaScript.

Kemudian muat model ke TensorFlow.js dengan memberikan URL ke file model.json:

// JavaScript

import * as tf from '@tensorflow/tfjs';

const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');

Sekarang model siap untuk inferensi, evaluasi, atau pelatihan ulang. Misalnya, model yang dimuat dapat segera digunakan untuk membuat prediksi:

// JavaScript

const example = tf.fromPixels(webcamElement);  // for example
const prediction = model.predict(example);

Banyak TensorFlow.js Contoh mengambil pendekatan ini, menggunakan model pretrained yang telah dikonversi dan host di Google Cloud Storage.

Perhatikan bahwa Anda mengacu pada seluruh model menggunakan model.json nama file. loadModel(...) menjemput model.json , dan kemudian membuat HTTP tambahan (S) permintaan untuk mendapatkan file berat sharded dirujuk dalam model.json manifest berat badan. Pendekatan ini memungkinkan semua file-file ini untuk di-cache oleh browser (dan mungkin dengan server caching tambahan di internet), karena model.json dan pecahan berat badan masing-masing lebih kecil dari file cache batas ukuran khas. Dengan demikian model kemungkinan akan memuat lebih cepat pada kesempatan berikutnya.

Fitur yang didukung

TensorFlow.js Layers saat ini hanya mendukung model Keras menggunakan konstruksi Keras standar. Model yang menggunakan operasi atau lapisan yang tidak didukung—misalnya lapisan khusus, lapisan Lambda, kerugian khusus, atau metrik khusus—tidak dapat diimpor secara otomatis, karena bergantung pada kode Python yang tidak dapat diterjemahkan secara andal ke dalam JavaScript.