استيراد نموذج 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 Layers ، ثم قم بتحميله في 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 Layers

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

# 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.