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

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

TensorFlow.js هدف فرمت لایه یک دایرکتوری حاوی یک model.json فایل و مجموعه ای از فایل های وزن sharded در قالب دودویی. 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 لایه، دستور زیر را، که در آن اجرا 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

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

اگر یک مدل 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 نمونه این روش، با استفاده از مدل pretrained که تبدیل و میزبانی در Google Cloud Storage شده است.

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

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

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