מודלים של 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.