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

يمكن حفظ نماذج Keras (التي يتم إنشاؤها عادةً عبر Python API) بأحد التنسيقات المتعددة . يمكن تحويل تنسيق "النموذج بأكمله" إلى تنسيق طبقات TensorFlow.js، والذي يمكن تحميله مباشرة إلى TensorFlow.js للاستدلال أو لمزيد من التدريب.

تنسيق طبقات TensorFlow.js المستهدف هو دليل يحتوي على ملف model.json ومجموعة من ملفات الوزن المجزأة بتنسيق ثنائي. يحتوي ملف model.json على كل من هيكل النموذج (المعروف أيضًا باسم "الهندسة المعمارية" أو "الرسم البياني": وصف الطبقات وكيفية اتصالها) وبيان ملفات الوزن.

متطلبات

يتطلب إجراء التحويل بيئة بايثون؛ قد ترغب في الاحتفاظ بواحدة معزولة باستخدام Pipenv أو Virtualenv . لتثبيت المحول، استخدم pip install tensorflowjs .

إن استيراد نموذج Keras إلى TensorFlow.js هو عملية مكونة من خطوتين. أولاً، قم بتحويل نموذج Keras الموجود إلى تنسيق طبقات TF.js، ثم قم بتحميله إلى TensorFlow.js.

الخطوة 1. قم بتحويل نموذج Keras الموجود إلى تنسيق طبقات TF.js

عادةً ما يتم حفظ نماذج Keras عبر model.save(filepath) ، الذي ينتج ملف HDF5 (.h5) واحد يحتوي على كل من هيكل النموذج والأوزان. لتحويل مثل هذا الملف إلى تنسيق طبقات TF.js، قم بتشغيل الأمر التالي، حيث يكون 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

البديل: استخدم Python API للتصدير مباشرة إلى تنسيق طبقات TF.js

إذا كان لديك نموذج Keras في Python، فيمكنك تصديره مباشرة إلى تنسيق طبقات TensorFlow.js كما يلي:

# 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 عن طريق توفير عنوان URL لملف 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 . يسمح هذا الأسلوب بتخزين كل هذه الملفات مؤقتًا بواسطة المتصفح (وربما بواسطة خوادم تخزين مؤقت إضافية على الإنترنت)، نظرًا لأن كل من model.json وأجزاء الوزن أصغر من الحد الأقصى لحجم ملف ذاكرة التخزين المؤقت النموذجي. وبالتالي، من المرجح أن يتم تحميل النموذج بسرعة أكبر في المناسبات اللاحقة.

الميزات المدعومة

تدعم طبقات TensorFlow.js حاليًا نماذج Keras التي تستخدم بنيات Keras القياسية فقط. لا يمكن استيراد النماذج التي تستخدم عمليات أو طبقات غير مدعومة - مثل الطبقات المخصصة، أو طبقات Lambda، أو الخسائر المخصصة، أو المقاييس المخصصة - تلقائيًا، لأنها تعتمد على كود Python الذي لا يمكن ترجمته بشكل موثوق إلى JavaScript.