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.