يمكنك الرد على دعوة الحضور لحضور حدث TensorFlow Everywhere المحلي اليوم!
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

استيراد نماذج تستند إلى TensorFlow GraphDef إلى TensorFlow.js

يمكن حفظ النماذج المستندة إلى TensorFlow GraphDef (التي يتم إنشاؤها عادةً عبر Python API) بأحد التنسيقات التالية:

  1. TensorFlow SavedModel
  2. نموذج مجمد
  3. حزمة الجلسة
  4. وحدة 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

الخطوة الثانية: التحميل والتشغيل في المتصفح

  1. قم بتثبيت حزمة tfjs-converter npm

yarn add @tensorflow/tfjs أو npm install @tensorflow/tfjs

  1. إنشاء فئة 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 البرنامج النصي 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");