ייבוא ​​דגם Keras אל TensorFlow.js

מודלים של Keras (בדרך כלל נוצרים באמצעות ה-API של Python) עשויים להישמר באחד ממספר פורמטים . ניתן להמיר את פורמט "הדגם השלם" לפורמט TensorFlow.js Layers, אותו ניתן לטעון ישירות אל TensorFlow.js להסקת מסקנות או להדרכה נוספת.

פורמט השכבות של TensorFlow.js היעד הוא ספרייה המכילה קובץ model.json וקבוצה של קבצי משקל מרוסקים בפורמט בינארי. הקובץ model.json מכיל גם את טופולוגיית המודל (המכונה גם "ארכיטקטורה" או "גרף": תיאור של השכבות ואיך הן מחוברות) וגם מניפסט של קבצי המשקל.

דרישות

הליך ההמרה דורש סביבת Python; ייתכן שתרצה לשמור אחד מבודד באמצעות 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 Layers

אם יש לך דגם Keras ב-Python, תוכל לייצא אותו ישירות לפורמט TensorFlow.js Layers באופן הבא:

# 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) , כדי לאפשר שליפת הקבצים ב-JavaScript.

לאחר מכן טען את המודל לתוך TensorFlow.js על ידי מתן כתובת האתר לקובץ model.json:

// 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 weight. גישה זו מאפשרת לאחסן את כל הקבצים הללו במטמון על ידי הדפדפן (ואולי על ידי שרתי מטמון נוספים באינטרנט), מכיוון ש- model.json ורסיסי המשקל קטנים כל אחד ממגבלת גודל קובץ המטמון הטיפוסית. לפיכך דגם עשוי להיטען מהר יותר בהזדמנויות הבאות.

תכונות נתמכות

TensorFlow.js Layers תומכת כרגע רק במודלים של Keras המשתמשים במבני Keras סטנדרטיים. מודלים המשתמשים באופציות או שכבות לא נתמכות - למשל שכבות מותאמות אישית, שכבות Lambda, הפסדים מותאמים אישית או מדדים מותאמים אישית - לא ניתנים לייבא אוטומטי, מכיוון שהם תלויים בקוד Python שלא ניתן לתרגם באופן אמין ל-JavaScript.