يمكن حفظ النماذج المستندة إلى 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
معلمة LoadOptions
إضافية ، والتي يمكن استخدامها لإرسال بيانات الاعتماد أو الرؤوس المخصصة جنبًا إلى جنب مع الطلب. يرجى الاطلاع على وثائق loadGraphModel () لمزيد من التفاصيل.
العمليات المدعومة
يدعم TensorFlow.js حاليًا مجموعة محدودة من عمليات TensorFlow. إذا كان نموذجك يستخدم عملية تشغيل غير مدعومة ، tensorflowjs_converter
البرنامج النصي 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");