मॉडल रूपांतरण

TensorFlow.js पूर्व प्रशिक्षित मॉडलों कि ब्राउज़र में उपयोग करने के लिए तैयार कर रहे हैं की एक किस्म के साथ आता है - वे पाया जा सकता है में हमारे मॉडल रेपो । हालाँकि, आपने कहीं और एक TensorFlow मॉडल पाया या लिखा होगा जिसे आप अपने वेब एप्लिकेशन में उपयोग करना चाहते हैं। TensorFlow.js एक मॉडल प्रदान कनवर्टर इस उद्देश्य के लिए। TensorFlow.js कनवर्टर के दो घटक हैं:

  1. एक कमांड लाइन उपयोगिता जो TensorFlow.js में उपयोग के लिए Keras और TensorFlow मॉडल को परिवर्तित करती है।
  2. TensorFlow.js के साथ ब्राउज़र में मॉडल को लोड करने और निष्पादित करने के लिए एक एपीआई।

अपना मॉडल बदलें

TensorFlow.js कनवर्टर कई अलग-अलग मॉडल प्रारूपों के साथ काम करता है:

SavedModel: इस जिसमें TensorFlow मॉडल सहेजे जाते हैं डिफ़ॉल्ट स्वरूप है। SavedModel प्रारूप प्रलेखित है यहाँ

Keras मॉडल: Keras मॉडल आम तौर पर एक HDF5 फ़ाइल के रूप में सहेजा जाता है। Keras मॉडल की बचत के बारे में अधिक जानकारी पाया जा सकता है यहाँ

TensorFlow हब मॉड्यूल: इन मॉडलों कि TensorFlow हब, साझा करने और मॉडल की खोज के लिए एक मंच पर वितरण के लिए पैक किया गया है। मॉडल पुस्तकालय पाया जा सकता है यहाँ

आप किस प्रकार के मॉडल को कनवर्ट करने का प्रयास कर रहे हैं, इसके आधार पर आपको कनवर्टर को अलग-अलग तर्क देने होंगे। उदाहरण के लिए, यदि आप एक Keras मॉडल नामित बचाया है मान लीजिए model.h5 अपने को tmp/ निर्देशिका। TensorFlow.js कनवर्टर का उपयोग करके अपने मॉडल को परिवर्तित करने के लिए, आप निम्न आदेश चला सकते हैं:

$ tensorflowjs_converter --input_format=keras /tmp/model.h5 /tmp/tfjs_model

इस पर मॉडल में परिवर्तित कर देंगे /tmp/model.h5 और आउटपुट एक model.json अपने को बाइनरी वजन फ़ाइलों के साथ फ़ाइल tmp/tfjs_model/ निर्देशिका।

अलग मॉडल प्रारूपों के लिए इसी आदेश पंक्ति तर्क के बारे में अधिक जानकारी के लिए कनवर्टर TensorFlow.js में पाया जा सकता README

रूपांतरण प्रक्रिया के दौरान हम मॉडल ग्राफ को पार करते हैं और जांचते हैं कि प्रत्येक ऑपरेशन TensorFlow.js द्वारा समर्थित है। यदि ऐसा है, तो हम ग्राफ को उस प्रारूप में लिखते हैं जिसका ब्राउज़र उपभोग कर सकता है। हम वज़न को 4MB फ़ाइलों में विभाजित करके वेब पर प्रस्तुत किए जाने के लिए मॉडल को अनुकूलित करने का प्रयास करते हैं - इस तरह उन्हें ब्राउज़र द्वारा कैश किया जा सकता है। हम यह भी मॉडल ग्राफ ही सरल करने के लिए खुला स्रोत का उपयोग कर प्रयास Grappler परियोजना। ग्राफ़ सरलीकरण में आसन्न संचालन को एक साथ मोड़ना, सामान्य सबग्राफ को समाप्त करना आदि शामिल हैं। इन परिवर्तनों का मॉडल के आउटपुट पर कोई प्रभाव नहीं पड़ता है। आगे अनुकूलन के लिए, उपयोगकर्ता एक तर्क में पारित कर सकते हैं जो कनवर्टर को एक निश्चित बाइट आकार में मॉडल को मापने का निर्देश देता है। परिमाणीकरण कम बिट्स के साथ वजन का प्रतिनिधित्व करके मॉडल के आकार को कम करने की एक तकनीक है। उपयोगकर्ताओं को यह सुनिश्चित करने के लिए सावधान रहना चाहिए कि उनका मॉडल परिमाणीकरण के बाद स्वीकार्य स्तर की सटीकता बनाए रखता है।

यदि हम रूपांतरण के दौरान एक असमर्थित ऑपरेशन का सामना करते हैं, तो प्रक्रिया विफल हो जाती है और हम उपयोगकर्ता के लिए ऑपरेशन का नाम प्रिंट कर लेते हैं। हमारे पर समस्या सबमिट करने के लिए स्वतंत्र महसूस GitHub हमें इसके बारे में बताने के लिए - हम उपयोगकर्ता मांग के जवाब में नए कार्यों के लागू करने के लिए प्रयास करें।

सर्वोत्तम प्रथाएं

यद्यपि हम रूपांतरण के दौरान आपके मॉडल को अनुकूलित करने के लिए हर संभव प्रयास करते हैं, अक्सर यह सुनिश्चित करने का सबसे अच्छा तरीका है कि आपका मॉडल अच्छा प्रदर्शन करे, इसे संसाधन-विवश वातावरण को ध्यान में रखकर बनाया जाए। इसका मतलब है कि अत्यधिक जटिल आर्किटेक्चर से बचना और जब संभव हो तो मापदंडों (वजन) की संख्या को कम करना।

अपना मॉडल चलाएं

अपने मॉडल को सफलतापूर्वक रूपांतरित करने पर, आपके पास भार फ़ाइलों का एक सेट और एक मॉडल टोपोलॉजी फ़ाइल होगी। TensorFlow.js मॉडल लोडिंग एपीआई प्रदान करता है जिसका उपयोग आप इन मॉडल संपत्तियों को लाने और ब्राउज़र में अनुमान चलाने के लिए कर सकते हैं।

यहाँ एक परिवर्तित TensorFlow SavedModel या TensorFlow हब मॉड्यूल के लिए API कैसा दिखता है:

const model = await tf.loadGraphModel(‘path/to/model.json’);

और यहाँ यह एक परिवर्तित केरस मॉडल के लिए कैसा दिखता है:

const model = await tf.loadLayersModel(‘path/to/model.json’);

tf.loadGraphModel एपीआई एक रिटर्न tf.FrozenModel , जिसका अर्थ है कि मानकों को तय कर रहे हैं और आप नए डेटा के साथ अपने मॉडल को फ़ाइन ट्यून करने में सक्षम नहीं होगा। tf.loadLayersModel एपीआई एक tf.Model, जो प्रशिक्षित किया जा सकता देता है। कैसे एक tf.Model प्रशिक्षित करने के लिए पर जानकारी के लिए, का उल्लेख ट्रेन मॉडल गाइड

रूपांतरण के बाद, अनुमान को कुछ बार चलाना और अपने मॉडल की गति को बेंचमार्क करना एक अच्छा विचार है। हम एक स्टैंडअलोन बेंचमार्किंग पेज कि इस उद्देश्य के लिए इस्तेमाल किया जा सकता है: https://tensorflow.github.io/tfjs/e2e/benchmarks/local-benchmark/index.html आप देख सकते हैं कि हम एक प्रारंभिक वार्मअप रन से माप त्यागने - ऐसा इसलिए है क्योंकि (सामान्य तौर पर) आपके मॉडल का पहला अनुमान बाद के अनुमानों की तुलना में कई गुना धीमा होगा क्योंकि बनावट बनाने और शेडर्स को संकलित करने के ऊपरी हिस्से के कारण।