ניתן לשמור מודלים מבוססי TensorFlow GraphDef (בדרך כלל נוצרים באמצעות ה-API של Python) באחד מהפורמטים הבאים:
- TensorFlow SavedModel
- דגם קפוא
- מודול Tensorflow Hub
ניתן להמיר את כל הפורמטים שלעיל על ידי ממיר TensorFlow.js לפורמט שניתן לטעון ישירות אל TensorFlow.js לצורך הסקה.
(הערה: TensorFlow הוציאה משימוש את פורמט חבילת ההפעלה. אנא העבר את הדגמים שלך לפורמט SavedModel.)
דרישות
הליך ההמרה דורש סביבת Python; ייתכן שתרצה לשמור אחד מבודד באמצעות pipenv או virtualenv .
כדי להתקין את הממיר, הפעל את הפקודה הבאה:
pip install tensorflowjs
ייבוא מודל TensorFlow אל TensorFlow.js הוא תהליך בן שני שלבים. ראשית, המר מודל קיים לפורמט האינטרנט TensorFlow.js, ולאחר מכן טען אותו אל TensorFlow.js.
שלב 1. המר מודל TensorFlow קיים לפורמט האינטרנט TensorFlow.js
הפעל את סקריפט הממיר שסופק על ידי חבילת pip:
דוגמה SavedModel:
tensorflowjs_converter \
--input_format=tf_saved_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
--saved_model_tags=serve \
/mobilenet/saved_model \
/mobilenet/web_model
דוגמה לדגם קפוא:
tensorflowjs_converter \
--input_format=tf_frozen_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
/mobilenet/frozen_model.pb \
/mobilenet/web_model
דוגמה למודול Tensorflow Hub:
tensorflowjs_converter \
--input_format=tf_hub \
'https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1' \
/mobilenet/web_model
טיעונים מיקוםיים | תֵאוּר |
---|---|
input_path | נתיב מלא של ספריית המודל השמורה, ספריית חבילת הפעלות, קובץ המודל הקפוא או הידית או הנתיב של מודול TensorFlow Hub. |
output_path | נתיב לכל חפצי הפלט. |
אפשרויות | תֵאוּר |
---|---|
--input_format | הפורמט של מודל הקלט. השתמש ב-tf_saved_model עבור SavedModel, tf_frozen_model עבור מודל קפוא, tf_session_bundle עבור חבילת הפעלה, tf_hub עבור מודול TensorFlow Hub ו-keras עבור Keras HDF5. |
--output_node_names | שמות צמתי הפלט, מופרדים בפסיקים. |
--saved_model_tags | חל רק על המרה של SavedModel. תגיות של MetaGraphDef לטעינה, בפורמט מופרד בפסיק. ברירת מחדל serve . |
--signature_name | ישים רק להמרת מודול TensorFlow Hub, חתימה לטעינה. ברירת המחדל default . ראה https://www.tensorflow.org/hub/common_signatures/ |
השתמש בפקודה הבאה כדי לקבל הודעת עזרה מפורטת:
tensorflowjs_converter --help
קבצים שנוצרו מממיר
סקריפט ההמרה למעלה מייצר שני סוגים של קבצים:
-
model.json
: גרף זרימת הנתונים ומניפסט המשקל -
group1-shard\*of\*
: אוסף של קבצי משקל בינאריים
לדוגמה, הנה הפלט מהמרת MobileNet v2:
output_directory/model.json
output_directory/group1-shard1of5
...
output_directory/group1-shard5of5
שלב 2: טעינה והפעלה בדפדפן
- התקן את חבילת tfjs-converter npm:
yarn add @tensorflow/tfjs
או npm install @tensorflow/tfjs
- הצג את המחלקה FrozenModel והפעל מסקנות.
import * as tf from '@tensorflow/tfjs';
import {loadGraphModel} from '@tensorflow/tfjs-converter';
const MODEL_URL = 'model_directory/model.json';
const model = await loadGraphModel(MODEL_URL);
const cat = document.getElementById('cat');
model.execute(tf.browser.fromPixels(cat));
בדוק את ההדגמה של MobileNet .
ה-API של loadGraphModel
מקבל פרמטר נוסף LoadOptions
, שניתן להשתמש בו כדי לשלוח אישורים או כותרות מותאמות אישית יחד עם הבקשה. לפרטים, עיין בתיעוד loadGraphModel() .
פעולות נתמכות
כרגע TensorFlow.js תומך בקבוצה מוגבלת של TensorFlow אופציות. אם המודל שלך משתמש באופ לא נתמך, הסקריפט tensorflowjs_converter
ייכשל וידפיס רשימה של האופציות הלא נתמכות במודל שלך. נא להגיש בעיה עבור כל ניתוח כדי ליידע אותנו לאילו פעולות אתה צריך תמיכה.
העמסת המשקולות בלבד
אם אתה מעדיף לטעון את המשקולות בלבד, אתה יכול להשתמש בקטע הקוד הבא:
import * as tf from '@tensorflow/tfjs';
const weightManifestUrl = "https://example.org/model/weights_manifest.json";
const manifest = await fetch(weightManifestUrl);
this.weightManifest = await manifest.json();
const weightMap = await tf.io.loadWeights(
this.weightManifest, "https://example.org/model");
// Use `weightMap` ...