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

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

الطبقات شكل TensorFlow.js الهدف هو الدليل الذي يحتوي على model.json ملف ومجموعة من الملفات الوزن sharded في تنسيق ثنائي. و 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) ، من أجل السماح جلب الملفات في جافا سكريبت.

ثم قم بتحميل النموذج في 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 اتخاذ هذا النهج، وذلك باستخدام نماذج pretrained التي تم تحويلها واستضافت على Google Cloud Storage.

الملاحظة التي تشير إلى نموذج كامل باستخدام model.json اسم الملف. loadModel(...) جلب model.json ، ومن ثم يجعل HTTP إضافية (S) طلبات للحصول على الملفات الوزن sharded المشار إليها في model.json اضح الوزن. هذا النهج يتيح لجميع هذه الملفات ليكون مؤقتا من قبل المتصفح (وربما عن طريق خوادم التخزين المؤقت إضافية على شبكة الإنترنت)، وذلك لأن model.json وشظايا الوزن هي كل أصغر من الحد الأقصى لحجم الملف المؤقت نموذجي. وبالتالي من المرجح أن يتم تحميل النموذج بسرعة أكبر في المناسبات اللاحقة.

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

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