وارد کردن یک مدل Keras به TensorFlow.js

مدل‌های Keras (معمولاً از طریق API Python ایجاد می‌شوند) ممکن است در یکی از چندین فرمت ذخیره شوند. قالب "کل مدل" را می توان به قالب لایه های TensorFlow.js تبدیل کرد که می تواند مستقیماً برای استنباط یا آموزش بیشتر در TensorFlow.js بارگذاری شود.

فرمت لایه‌های هدف TensorFlow.js یک فهرست شامل یک فایل model.json و مجموعه‌ای از فایل‌های وزن خرد شده در قالب باینری است. فایل model.json هم توپولوژی مدل (معروف به "معماری" یا "گراف": شرح لایه ها و نحوه اتصال آنها) و هم یک مانیفست فایل های وزن است.

الزامات

روش تبدیل به یک محیط پایتون نیاز دارد. ممکن است بخواهید با استفاده از pipenv یا virtualenv یک ایزوله نگه دارید. برای نصب مبدل از pip install tensorflowjs استفاده کنید.

وارد کردن یک مدل Keras به TensorFlow.js یک فرآیند دو مرحله ای است. ابتدا یک مدل Keras موجود را به قالب TF.js Layers تبدیل کنید و سپس آن را در TensorFlow.js بارگذاری کنید.

مرحله 1. یک مدل Keras موجود را به قالب TF.js Layers تبدیل کنید

مدل‌های Keras معمولاً از طریق model.save(filepath) ذخیره می‌شوند که یک فایل HDF5 (.h5) را تولید می‌کند که هم توپولوژی مدل و هم وزن‌ها را در بر می‌گیرد. برای تبدیل چنین فایلی به فرمت TF.js Layers، دستور زیر را اجرا کنید، جایی که path/to/my_model.h5 منبع فایل Keras .h5 و path/to/tfjs_target_dir فهرست خروجی هدف برای فایل‌های TF.js است:

# bash

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

جایگزین: از API Python برای صادرات مستقیم به قالب لایه های TF.js استفاده کنید

اگر یک مدل Keras در پایتون دارید، می‌توانید آن را مستقیماً به قالب لایه‌های TensorFlow.js به صورت زیر صادر کنید:

# 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: مدل را در TensorFlow.js بارگذاری کنید

از یک وب سرور برای ارائه فایل های مدل تبدیل شده ای که در مرحله 1 ایجاد کرده اید استفاده کنید. توجه داشته باشید که ممکن است لازم باشد سرور خود را به گونه ای پیکربندی کنید که به اشتراک گذاری منابع متقاطع (CORS) اجازه واکشی فایل ها را در جاوا اسکریپت بدهد.

سپس با ارائه URL به فایل model.json، مدل را در TensorFlow.js بارگذاری کنید:

// JavaScript

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

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

اکنون مدل برای استنباط، ارزیابی یا آموزش مجدد آماده است. به عنوان مثال، مدل بارگذاری شده را می توان بلافاصله برای پیش بینی استفاده کرد:

// JavaScript

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

بسیاری از نمونه‌های TensorFlow.js از این رویکرد استفاده می‌کنند و از مدل‌های از پیش آموزش‌دیده‌شده‌ای استفاده می‌کنند که در Google Cloud Storage تبدیل و میزبانی شده‌اند.

توجه داشته باشید که با استفاده از نام فایل model.json به کل مدل مراجعه کنید. loadModel(...) model.json را واکشی می کند و سپس درخواست های HTTP(S) اضافی را برای به دست آوردن فایل های وزن خرد شده ارجاع شده در مانیفست وزن model.json می کند. این رویکرد به همه این فایل‌ها اجازه می‌دهد تا توسط مرورگر (و شاید توسط سرورهای ذخیره‌سازی اضافی در اینترنت) در حافظه پنهان شوند، زیرا model.json و وزن خرده‌ها هر کدام کوچکتر از حد معمول اندازه فایل کش هستند. بنابراین احتمالاً یک مدل در موارد بعدی سریعتر بارگذاری می شود.

ویژگی های پشتیبانی شده

لایه‌های TensorFlow.js در حال حاضر تنها از مدل‌های Keras با استفاده از ساختارهای استاندارد Keras پشتیبانی می‌کنند. مدل‌هایی که از عملیات‌ها یا لایه‌های پشتیبانی‌نشده استفاده می‌کنند - به عنوان مثال لایه‌های سفارشی، لایه‌های Lambda، تلفات سفارشی یا معیارهای سفارشی - نمی‌توانند به‌طور خودکار وارد شوند، زیرا به کد پایتون بستگی دارند که نمی‌تواند به طور قابل اعتماد به جاوا اسکریپت ترجمه شود.