TensorFlow GraphDef-आधारित मॉडल (आमतौर पर Python API के माध्यम से बनाए गए) को निम्नलिखित प्रारूपों में से एक में सहेजा जा सकता है:
- टेंसरफ्लो सेव्डमॉडल
- जमे हुए मॉडल
- टेंसरफ़्लो हब मॉड्यूल
उपरोक्त सभी प्रारूपों को TensorFlow.js कनवर्टर द्वारा एक ऐसे प्रारूप में परिवर्तित किया जा सकता है जिसे अनुमान के लिए सीधे TensorFlow.js में लोड किया जा सकता है।
(नोट: TensorFlow ने सत्र बंडल प्रारूप को हटा दिया है। कृपया अपने मॉडलों को SaveModel प्रारूप में स्थानांतरित करें।)
आवश्यकताएं
रूपांतरण प्रक्रिया के लिए पायथन वातावरण की आवश्यकता होती है; आप Pipenv या वर्चुअलenv का उपयोग करके एक अलग रखना चाह सकते हैं।
कनवर्टर स्थापित करने के लिए, निम्न आदेश चलाएँ:
pip install tensorflowjs
TensorFlow मॉडल को TensorFlow.js में आयात करना दो चरणों वाली प्रक्रिया है। सबसे पहले, मौजूदा मॉडल को TensorFlow.js वेब प्रारूप में परिवर्तित करें, और फिर इसे TensorFlow.js में लोड करें।
चरण 1. मौजूदा TensorFlow मॉडल को TensorFlow.js वेब प्रारूप में बदलें
पिप पैकेज द्वारा प्रदान की गई कनवर्टर स्क्रिप्ट चलाएँ:
सेव्डमॉडल उदाहरण:
tensorflowjs_converter \
--input_format=tf_saved_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
--saved_model_tags=serve \
/mobilenet/saved_model \
/mobilenet/web_model
जमे हुए मॉडल उदाहरण:
tensorflowjs_converter \
--input_format=tf_frozen_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
/mobilenet/frozen_model.pb \
/mobilenet/web_model
टेन्सरफ़्लो हब मॉड्यूल उदाहरण:
tensorflowjs_converter \
--input_format=tf_hub \
'https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1' \
/mobilenet/web_model
स्थितीय तर्क | विवरण |
---|---|
input_path | सहेजे गए मॉडल निर्देशिका, सत्र बंडल निर्देशिका, जमे हुए मॉडल फ़ाइल या TensorFlow हब मॉड्यूल हैंडल या पथ का पूरा पथ। |
output_path | सभी आउटपुट कलाकृतियों के लिए पथ. |
विकल्प | विवरण |
---|---|
--input_format | इनपुट मॉडल का प्रारूप. SavedModel के लिए tf_saven_model, फ्रोजन मॉडल के लिए tf_frozen_model, सेशन बंडल के लिए tf_session_bundle, TensorFlow हब मॉड्यूल के लिए tf_hub और Keras HDF5 के लिए keras का उपयोग करें। |
--output_node_names | आउटपुट नोड्स के नाम, अल्पविराम द्वारा अलग किए गए। |
--saved_model_tags | केवल सेव्डमॉडल रूपांतरण पर लागू। मेटाग्राफडिफ के टैग को अल्पविराम से अलग किए गए प्रारूप में लोड किया जाना चाहिए। serve के लिए डिफ़ॉल्ट. |
--signature_name | केवल TensorFlow हब मॉड्यूल रूपांतरण, लोड करने के लिए हस्ताक्षर पर लागू। default से डिफ़ॉल्ट. https://www.tensorflow.org/hub/common_signatures/ देखें |
विस्तृत सहायता संदेश प्राप्त करने के लिए निम्नलिखित आदेश का उपयोग करें:
tensorflowjs_converter --help
कनवर्टर द्वारा बनाई गई फ़ाइलें
उपरोक्त रूपांतरण स्क्रिप्ट दो प्रकार की फ़ाइलें उत्पन्न करती है:
-
model.json
: डेटा प्रवाह ग्राफ़ और वज़न मैनिफ़ेस्ट -
group1-shard\*of\*
: बाइनरी वेट फ़ाइलों का एक संग्रह
उदाहरण के लिए, यहां MobileNet v2 को परिवर्तित करने का आउटपुट दिया गया है:
output_directory/model.json
output_directory/group1-shard1of5
...
output_directory/group1-shard5of5
चरण 2: ब्राउज़र में लोड करना और चलाना
- tfjs-कनवर्टर npm पैकेज स्थापित करें:
yarn add @tensorflow/tfjs
या npm install @tensorflow/tfjs
- फ्रोज़नमॉडल क्लास को इंस्टेंट करें और अनुमान चलाएँ।
import * as tf from '@tensorflow/tfjs';
import {loadGraphModel} from '@tensorflow/tfjs-converter';
const MODEL_URL = 'model_directory/model.json';
const model = await loadGraphModel(MODEL_URL);
const cat = document.getElementById('cat');
model.execute(tf.browser.fromPixels(cat));
मोबाइलनेट डेमो देखें।
loadGraphModel
API एक अतिरिक्त LoadOptions
पैरामीटर स्वीकार करता है, जिसका उपयोग अनुरोध के साथ क्रेडेंशियल या कस्टम हेडर भेजने के लिए किया जा सकता है। विवरण के लिए, LoadGraphModel() दस्तावेज़ देखें।
समर्थित संचालन
वर्तमान में TensorFlow.js, TensorFlow ऑप्स के सीमित सेट का समर्थन करता है। यदि आपका मॉडल एक असमर्थित ऑप का उपयोग करता है, तो tensorflowjs_converter
स्क्रिप्ट विफल हो जाएगी और आपके मॉडल में असमर्थित ऑप की एक सूची प्रिंट कर लेगी। कृपया प्रत्येक ऑपरेशन के लिए एक मुद्दा दर्ज करें ताकि हमें पता चल सके कि आपको किस ऑपरेशन के लिए समर्थन की आवश्यकता है।
केवल वजन लोड करना
यदि आप केवल वज़न लोड करना पसंद करते हैं, तो आप निम्नलिखित कोड स्निपेट का उपयोग कर सकते हैं:
import * as tf from '@tensorflow/tfjs';
const weightManifestUrl = "https://example.org/model/weights_manifest.json";
const manifest = await fetch(weightManifestUrl);
this.weightManifest = await manifest.json();
const weightMap = await tf.io.loadWeights(
this.weightManifest, "https://example.org/model");
// Use `weightMap` ...