Bir Keras modelini TensorFlow.js'ye aktarma

Keras modelleri (genellikle Python API aracılığıyla oluşturulur) çeşitli formatlardan birinde kaydedilebilir. "Tüm model" formatı, çıkarım veya ileri eğitim için doğrudan TensorFlow.js'ye yüklenebilen TensorFlow.js Katmanlar formatına dönüştürülebilir.

Hedef TensorFlow.js Katmanları formatı, bir model.json dosyasını ve ikili formatta bir dizi parçalanmış ağırlık dosyasını içeren bir dizindir. model.json dosyası hem model topolojisini ("mimari" veya "grafik" olarak da bilinir: katmanların ve bunların nasıl bağlandığının açıklaması) hem de ağırlık dosyalarının bir bildirimini içerir.

Gereksinimler

Dönüştürme prosedürü bir Python ortamı gerektirir; pipenv veya virtualenv kullanarak yalıtılmış bir tane tutmak isteyebilirsiniz. Dönüştürücüyü kurmak için pip install tensorflowjs kullanın.

Bir Keras modelini TensorFlow.js'ye aktarmak iki adımlı bir işlemdir. Öncelikle mevcut bir Keras modelini TF.js Katmanlar formatına dönüştürün ve ardından TensorFlow.js'ye yükleyin.

1. Adım. Mevcut bir Keras modelini TF.js Katmanlar formatına dönüştürün

Keras modelleri genellikle model.save(filepath) aracılığıyla kaydedilir; bu, hem model topolojisini hem de ağırlıkları içeren tek bir HDF5 (.h5) dosyası üretir. Böyle bir dosyayı TF.js Katmanlar biçimine dönüştürmek için aşağıdaki komutu çalıştırın; burada path/to/my_model.h5 kaynak Keras .h5 dosyasıdır ve path/to/tfjs_target_dir TF.js dosyalarının hedef çıktı dizinidir:

# bash

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

Alternatif: Doğrudan TF.js Katmanlar biçimine aktarmak için Python API'sini kullanın

Python'da bir Keras modeliniz varsa bunu doğrudan TensorFlow.js Katmanlar formatına aşağıdaki gibi aktarabilirsiniz:

# 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)

Adım 2: Modeli TensorFlow.js'ye yükleyin

1. Adımda oluşturduğunuz dönüştürülmüş model dosyalarını sunmak için bir web sunucusu kullanın. Dosyaların JavaScript'te getirilmesine izin vermek için sunucunuzu Çapraz Kaynaklı Kaynak Paylaşımına (CORS) izin verecek şekilde yapılandırmanız gerekebileceğini unutmayın.

Ardından model.json dosyasının URL'sini sağlayarak modeli TensorFlow.js'ye yükleyin:

// JavaScript

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

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

Artık model çıkarım, değerlendirme veya yeniden eğitim için hazırdır. Örneğin, yüklenen model hemen bir tahmin yapmak için kullanılabilir:

// JavaScript

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

TensorFlow.js Örneklerinin çoğu, Google Cloud Storage'da dönüştürülen ve barındırılan önceden eğitilmiş modelleri kullanarak bu yaklaşımı benimser.

model.json dosya adını kullanarak modelin tamamına başvurduğunuzu unutmayın. loadModel(...) model.json dosyasını getirir ve ardından model.json ağırlık bildiriminde başvurulan parçalanmış ağırlık dosyalarını elde etmek için ek HTTP(S) isteklerinde bulunur. Bu yaklaşım, model.json ve ağırlık parçalarının her biri tipik önbellek dosyası boyutu sınırından daha küçük olduğundan, tüm bu dosyaların tarayıcı tarafından (ve belki de internetteki ek önbellekleme sunucuları tarafından) önbelleğe alınmasına olanak tanır. Bu nedenle bir modelin sonraki durumlarda daha hızlı yüklenmesi muhtemeldir.

Desteklenen özellikler

TensorFlow.js Katmanları şu anda yalnızca standart Keras yapılarını kullanan Keras modellerini desteklemektedir. Desteklenmeyen operasyonları veya katmanları (örneğin, özel katmanlar, Lambda katmanları, özel kayıplar veya özel ölçümler) kullanan modeller, JavaScript'e güvenilir bir şekilde çevrilemeyen Python koduna bağlı olduklarından otomatik olarak içe aktarılamaz.