TensorFlow.js में केरस मॉडल आयात करना

केरस मॉडल (आमतौर पर पायथन एपीआई के माध्यम से बनाए गए) को कई प्रारूपों में से एक में सहेजा जा सकता है। "संपूर्ण मॉडल" प्रारूप को TensorFlow.js लेयर्स प्रारूप में परिवर्तित किया जा सकता है, जिसे अनुमान या आगे के प्रशिक्षण के लिए सीधे TensorFlow.js में लोड किया जा सकता है।

लक्ष्य TensorFlow.js लेयर्स प्रारूप एक निर्देशिका है जिसमें एक model.json फ़ाइल और बाइनरी प्रारूप में शार्ड वेट फ़ाइलों का एक सेट होता है। model.json फ़ाइल में मॉडल टोपोलॉजी (उर्फ "आर्किटेक्चर" या "ग्राफ़": परतों का विवरण और वे कैसे जुड़े हुए हैं) और वेट फ़ाइलों का एक मेनिफेस्ट दोनों शामिल हैं।

आवश्यकताएं

रूपांतरण प्रक्रिया के लिए पायथन वातावरण की आवश्यकता होती है; आप Pipenv या वर्चुअलenv का उपयोग करके एक अलग रखना चाह सकते हैं। कनवर्टर स्थापित करने के लिए, pip install tensorflowjs का उपयोग करें।

TensorFlow.js में केरस मॉडल को आयात करना दो चरणों वाली प्रक्रिया है। सबसे पहले, मौजूदा केरस मॉडल को TF.js लेयर्स फॉर्मेट में बदलें, और फिर इसे TensorFlow.js में लोड करें।

चरण 1. मौजूदा केरस मॉडल को TF.js लेयर्स प्रारूप में बदलें

केरस मॉडल आमतौर पर 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

वैकल्पिक: सीधे TF.js लेयर्स प्रारूप में निर्यात करने के लिए Python API का उपयोग करें

यदि आपके पास Python में Keras मॉडल है, तो आप इसे सीधे 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 में आपके द्वारा जेनरेट की गई परिवर्तित मॉडल फ़ाइलों की सेवा के लिए एक वेब सर्वर का उपयोग करें। ध्यान दें कि जावास्क्रिप्ट में फ़ाइलों को लाने की अनुमति देने के लिए आपको क्रॉस-ओरिजिनल रिसोर्स शेयरिंग (सीओआरएस) की अनुमति देने के लिए अपने सर्वर को कॉन्फ़िगर करने की आवश्यकता हो सकती है।

फिर model.json फ़ाइल का URL प्रदान करके मॉडल को TensorFlow.js में लोड करें:

// 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 क्लाउड स्टोरेज पर परिवर्तित और होस्ट किया गया है।

ध्यान दें कि आप model.json फ़ाइल नाम का उपयोग करके संपूर्ण मॉडल को संदर्भित करते हैं। loadModel(...) model.json लाता है, और फिर model.json वज़न मेनिफेस्ट में संदर्भित शार्ड वेट फ़ाइलों को प्राप्त करने के लिए अतिरिक्त HTTP(S) अनुरोध करता है। यह दृष्टिकोण इन सभी फ़ाइलों को ब्राउज़र द्वारा (और शायद इंटरनेट पर अतिरिक्त कैशिंग सर्वर द्वारा) कैश करने की अनुमति देता है, क्योंकि model.json और वेट शार्ड प्रत्येक सामान्य कैश फ़ाइल आकार सीमा से छोटे होते हैं। इस प्रकार एक मॉडल के बाद के अवसरों पर अधिक तेज़ी से लोड होने की संभावना है।

समर्थित सुविधाएँ

TensorFlow.js लेयर्स वर्तमान में केवल मानक Keras संरचनाओं का उपयोग करके Keras मॉडल का समर्थन करता है। असमर्थित ऑप्स या परतों का उपयोग करने वाले मॉडल - जैसे कस्टम परतें, लैम्ब्डा परतें, कस्टम हानियाँ, या कस्टम मेट्रिक्स - स्वचालित रूप से आयात नहीं किए जा सकते हैं, क्योंकि वे पायथन कोड पर निर्भर करते हैं जिन्हें विश्वसनीय रूप से जावास्क्रिप्ट में अनुवादित नहीं किया जा सकता है।