يمكن حفظ نماذج 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.