Bir Keras modelini TensorFlow.js'ye içe aktarma

(Tipik Python API ile oluşturulan) Keras modelleri kaydedilmiş olabilir birkaç biçimlerden birinde . "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 biçimi içeren bir dizindir model.json dosyası ve ikili formatta kanatlı bir ağırlık dosyaları kümesi. model.json ve ağırlık dosyaları bildirim: Dosya modeli topolojisi (nasıl bağlandıklarını tabakaların bir tanımını ve diğer adıyla "yapı" ya da "grafiği") her ikisini de içerir.

Gereksinimler

Dönüştürme prosedürü bir Python ortamı gerektirir; Kullandığınız bir izole birini tutmak isteyebilirsiniz pipenv veya VIRTUALENV . Dönüştürücü yüklemek için, kullanım pip install tensorflowjs .

Bir Keras modelini TensorFlow.js'ye içe aktarmak iki adımlı bir işlemdir. İlk olarak, mevcut bir Keras modelini TF.js Layers formatına dönüştürün ve ardından onu TensorFlow.js'ye yükleyin.

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

Keras modeller genellikle ile kaydedilir model.save(filepath) modeli topolojisi ve ağırlıkları hem de ihtiva eden tek bir HDF5 (.h5) dosyası üretir. TF.js Katmanlar biçimine böyle bir dosyayı dönüştürmek için aşağıdaki komutu çalıştırın path/to/my_model.h5 kaynak keras .h5 dosyası ve bir path/to/tfjs_target_dir TF.js dosyalar için hedef çıkış dizini:

# bash

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

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

Python'da bir Keras modeliniz varsa, onu doğrudan aşağıdaki gibi TensorFlow.js Katmanları formatına 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)

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

Eğer şekilde yapılandırın gerekebileceğini Adım 1. Not oluşturulan dönüştürülmüş modeli dosyalarını sunmak için bir web sunucusu kullanın Çapraz Kökenli Kaynak Paylaşımı (CORS) izin JavaScript dosya alınması sağlamak için,.

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

Birçok TensorFlow.js Örnekler dönüştürülür ile Google Cloud Storage barındırılan edilmiştir pretrained modellerini kullanarak, bu yaklaşım.

Not kullandığınız tüm modele ait olduğunu model.json dosya adını. loadModel(...) getirir model.json ve sonra başvurulan kanatlı bir ağırlık dosyalarını edinmek için ek HTTP (S) istekleri yapar model.json ağırlık manifest'te. Çünkü bu yaklaşım, bütün bu dosyalar tarayıcı tarafından önbelleğe (ve belki de internet üzerinden ek önbelleğe alma sunucuları tarafından) izin verir model.json ve ağırlık kırıkları tipik önbellek dosya boyutu sınırından daha her küçüktü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 işlemler veya katmanlar (ör. ö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.