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.

Format Lapisan TensorFlow.js target adalah direktori yang berisi file model.json dan sekumpulan file bobot shard dalam format biner. File model.json berisi topologi model (alias "arsitektur" atau "grafik": deskripsi lapisan dan cara mereka terhubung) dan manifes file bobot.

Persyaratan

Prosedur konversi memerlukan lingkungan Python; Anda mungkin ingin menyimpan yang terisolasi menggunakan pipenv atau virtualenv . Untuk menginstal konverter, gunakan pip install tensorflowjs .

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

Langkah 1. Konversikan model Keras yang ada ke format Lapisan TF.js

Model keras biasanya disimpan melalui model.save(filepath) , yang menghasilkan satu file HDF5 (.h5) yang berisi topologi model dan bobot. Untuk mengonversi file tersebut ke format Lapisan TF.js, jalankan perintah berikut, dengan path/to/my_model.h5 adalah file Keras .h5 sumber dan path/to/tfjs_target_dir adalah direktori output target untuk 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 TensorFlow.js Layers 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 server web untuk menyajikan file model konversi yang Anda buat pada Langkah 1. Perhatikan bahwa Anda mungkin perlu mengonfigurasi server Anda untuk mengizinkan Cross-Origin Resource Sharing (CORS) , untuk mengizinkan pengambilan file dalam JavaScript.

Lalu 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');

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

// JavaScript

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

Banyak Contoh TensorFlow.js menggunakan pendekatan ini, menggunakan model terlatih yang telah dikonversi dan dihosting di Google Cloud Storage.

Perhatikan bahwa Anda merujuk ke keseluruhan model menggunakan nama file model.json . loadModel(...) mengambil model.json , lalu membuat permintaan HTTP(S) tambahan untuk mendapatkan file bobot pecahan yang direferensikan dalam manifes bobot model.json . Pendekatan ini memungkinkan semua file ini di-cache oleh browser (dan mungkin oleh server caching tambahan di internet), karena model.json dan pecahan bobot masing-masing lebih kecil daripada batas ukuran file cache pada umumnya. Oleh karena itu, suatu model kemungkinan akan dimuat lebih cepat pada kesempatan berikutnya.

Fitur yang didukung

Lapisan TensorFlow.js 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 model tersebut bergantung pada kode Python yang tidak dapat diterjemahkan secara andal ke dalam JavaScript.