يمكن حفظ النماذج المستندة إلى TensorFlow GraphDef (التي يتم إنشاؤها عادةً عبر Python API) بأحد التنسيقات التالية:
- TensorFlow SavedModel
- نموذج مجمد
- وحدة Tensorflow Hub
كل من الأشكال المذكورة أعلاه يمكن تحويلها من تحويل TensorFlow.js إلى تنسيق التي يمكن تحميلها مباشرة إلى TensorFlow.js للاستدلال.
(ملاحظة: لقد ألغى TensorFlow تنسيق حزمة الجلسة ، يرجى ترحيل النماذج الخاصة بك إلى تنسيق SavedModel.)
متطلبات
يتطلب إجراء التحويل بيئة بايثون ؛ قد ترغب في الاحتفاظ معزولة واحد باستخدام pipenv أو virtualenv . لتثبيت المحول ، قم بتشغيل الأمر التالي:
pip install tensorflowjs
استيراد نموذج TensorFlow إلى TensorFlow.js عبارة عن عملية من خطوتين. أولاً ، قم بتحويل نموذج موجود إلى تنسيق الويب TensorFlow.js ، ثم قم بتحميله في TensorFlow.js.
الخطوة الأولى. قم بتحويل نموذج TensorFlow الحالي إلى تنسيق الويب TensorFlow.js
قم بتشغيل سكربت المحول الذي توفره حزمة النقطة:
الاستخدام: مثال على 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
الخطوة الثانية: التحميل والتشغيل في المتصفح
- قم بتثبيت حزمة 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 .
و loadGraphModel
API يقبل إضافية 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");