TensorFlow.js उन मॉडलों को सहेजने और लोड करने के लिए कार्यक्षमता प्रदान करता है जो Layers
API के साथ बनाए गए हैं या मौजूदा TensorFlow मॉडल से परिवर्तित किए गए हैं। ये वे मॉडल हो सकते हैं जिन्हें आपने स्वयं प्रशिक्षित किया है या जिन्हें दूसरों द्वारा प्रशिक्षित किया गया है। लेयर्स एपीआई का उपयोग करने का एक प्रमुख लाभ यह है कि इसके साथ बनाए गए मॉडल क्रमबद्ध हैं और यही हम इस ट्यूटोरियल में देखेंगे।
यह ट्यूटोरियल TensorFlow.js मॉडल (JSON फ़ाइलों द्वारा पहचाने जाने योग्य) को सहेजने और लोड करने पर केंद्रित होगा। हम TensorFlow Python मॉडल भी आयात कर सकते हैं। इन मॉडलों को लोड करना निम्नलिखित दो ट्यूटोरियल में शामिल है:
एक tf.मॉडल सहेजें
tf.Model
और tf.Sequential
दोनों एक फ़ंक्शन प्रदान करते हैं model.save
जो आपको एक मॉडल के टोपोलॉजी और वजन को बचाने की अनुमति देता है।
टोपोलॉजी: यह एक मॉडल की वास्तुकला का वर्णन करने वाली एक फाइल है (यानी यह किस ऑपरेशन का उपयोग करता है)। इसमें मॉडल के वजन के संदर्भ होते हैं जो बाहरी रूप से संग्रहीत होते हैं।
वज़न: ये बाइनरी फ़ाइलें हैं जो किसी दिए गए मॉडल के वज़न को एक कुशल प्रारूप में संग्रहीत करती हैं। वे आम तौर पर टोपोलॉजी के समान फ़ोल्डर में संग्रहीत होते हैं।
आइए देखें कि मॉडल को बचाने के लिए कोड कैसा दिखता है
const saveResult = await model.save('localstorage://my-model-1');
ध्यान देने योग्य कुछ बातें:
-
save
मेथड एक यूआरएल-जैसे स्ट्रिंग तर्क लेता है जो एक योजना से शुरू होता है। यह उस गंतव्य के प्रकार का वर्णन करता है जिसमें हम एक मॉडल को सहेजने का प्रयास कर रहे हैं। योजना के ऊपर के उदाहरण मेंlocalstorage://
- योजना का अनुसरण एक पथ द्वारा किया जाता है। पथ के ऊपर के उदाहरण में
my-model-1
है। -
save
विधि अतुल्यकालिक है। -
model.save
का रिटर्न वैल्यू एक JSON ऑब्जेक्ट है जो मॉडल की टोपोलॉजी और वेट के बाइट साइज जैसी जानकारी को वहन करता है। - मॉडल को सहेजने के लिए उपयोग किया जाने वाला परिवेश मॉडल को लोड करने वाले परिवेशों को प्रभावित नहीं करता है। किसी मॉडल को नोड.जेएस में सहेजना उसे ब्राउज़र में लोड होने से नहीं रोकता है।
नीचे हम उपलब्ध विभिन्न योजनाओं की जांच करेंगे।
स्थानीय संग्रहण (केवल ब्राउज़र)
योजना: localstorage://
await model.save('localstorage://my-model');
यह ब्राउज़र के स्थानीय संग्रहण में my-model
नाम से एक मॉडल सहेजता है। यह रिफ्रेश के बीच बना रहेगा, हालांकि स्थानीय भंडारण को उपयोगकर्ताओं या ब्राउज़र द्वारा ही साफ़ किया जा सकता है यदि स्थान एक चिंता का विषय बन जाता है। प्रत्येक ब्राउज़र किसी दिए गए डोमेन के लिए स्थानीय संग्रहण में कितना डेटा संग्रहीत किया जा सकता है, इसकी अपनी सीमा भी निर्धारित करता है।
IndexedDB (केवल ब्राउज़र)
योजना: indexeddb://
await model.save('indexeddb://my-model');
यह एक मॉडल को ब्राउज़र के IndexedDB संग्रहण में सहेजता है। स्थानीय भंडारण की तरह यह ताज़ा करने के बीच बना रहता है, इसमें संग्रहीत वस्तुओं के आकार पर बड़ी सीमाएँ भी होती हैं।
फ़ाइल डाउनलोड (केवल ब्राउज़र)
योजना: downloads://
await model.save('downloads://my-model');
यह ब्राउज़र को उपयोगकर्ता की मशीन पर मॉडल फ़ाइलों को डाउनलोड करने का कारण बनेगा। दो फाइलें तैयार की जाएंगी:
-
[my-model].json
नाम की एक टेक्स्ट JSON फ़ाइल, जो नीचे वर्णित वज़न फ़ाइल के टोपोलॉजी और संदर्भ को वहन करती है। -
[my-model].weights.bin
नामक वज़न मान वाली बाइनरी फ़ाइल।
आप भिन्न नाम वाली फ़ाइलें प्राप्त करने के लिए [my-model]
नाम बदल सकते हैं।
चूँकि .json
फ़ाइल सापेक्ष पथ का उपयोग करके .bin
की ओर इशारा करती है, इसलिए दोनों फ़ाइलें एक ही फ़ोल्डर में होनी चाहिए।
HTTP (एस) अनुरोध
योजना: http://
या https://
await model.save('http://model-server.domain/upload')
यह एक मॉडल को दूरस्थ सर्वर पर सहेजने के लिए एक वेब अनुरोध बनाएगा। आपको उस रिमोट सर्वर के नियंत्रण में होना चाहिए ताकि आप यह सुनिश्चित कर सकें कि यह अनुरोध को संभालने में सक्षम है।
मॉडल को POST अनुरोध के माध्यम से निर्दिष्ट HTTP सर्वर पर भेजा जाएगा। POST की बॉडी multipart/form-data
फॉर्मेट में है और इसमें दो फाइलें हैं
-
model.json
नाम की एक टेक्स्ट JSON फ़ाइल, जो नीचे वर्णित वज़न फ़ाइल के टोपोलॉजी और संदर्भ को वहन करती है। -
model.weights.bin
नामक भार मान वाली एक बाइनरी फ़ाइल।
ध्यान दें कि दो फाइलों का नाम हमेशा ऊपर बताए अनुसार होगा (नाम फ़ंक्शन में बनाया गया है)। इस एपीआई दस्तावेज़ में एक पायथन कोड स्निपेट है जो दर्शाता है कि save
से उत्पन्न अनुरोध को संभालने के लिए फ्लास्क वेब फ्रेमवर्क का उपयोग कैसे किया जा सकता है।
अक्सर आपको अपने HTTP सर्वर पर अधिक तर्क या अनुरोध हेडर पास करने होंगे (उदाहरण के लिए प्रमाणीकरण के लिए या यदि आप एक फ़ोल्डर निर्दिष्ट करना चाहते हैं जिसमें मॉडल को सहेजा जाना चाहिए)। आप tf.io.browserHTTPRequest
में URL स्ट्रिंग तर्क को बदलकर save
से अनुरोधों के इन पहलुओं पर बढ़िया नियंत्रण प्राप्त कर सकते हैं। यह एपीआई HTTP अनुरोधों को नियंत्रित करने में अधिक लचीलापन प्रदान करता है।
उदाहरण के लिए:
await model.save(tf.io.browserHTTPRequest(
'http://model-server.domain/upload',
{method: 'PUT', headers: {'header_key_1': 'header_value_1'} }));
मूल फ़ाइल सिस्टम (केवल Node.js)
योजना: file://
await model.save('file:///path/to/my-model');
Node.js पर चलते समय हमारे पास फाइल सिस्टम तक सीधी पहुंच भी होती है और हम वहां मॉडल सहेज सकते हैं। उपरोक्त आदेश दो फाइलों को scheme
के बाद निर्दिष्ट path
पर सहेजेगा।
-
[model].json
नाम की एक टेक्स्ट JSON फ़ाइल, जो नीचे वर्णित वज़न फ़ाइल के टोपोलॉजी और संदर्भ को वहन करती है। -
[model].weights.bin
नामक भार मान वाली एक बाइनरी फ़ाइल।
ध्यान दें कि दो फाइलों का नाम हमेशा ऊपर बताए अनुसार होगा (नाम फ़ंक्शन में बनाया गया है)।
एक tf.Model लोड हो रहा है
उपरोक्त विधियों में से किसी एक का उपयोग करके सहेजे गए मॉडल को देखते हुए, हम इसे tf.loadLayersModel
API का उपयोग करके लोड कर सकते हैं।
आइए देखें कि मॉडल लोड करने के लिए कोड कैसा दिखता है
const model = await tf.loadLayersModel('localstorage://my-model-1');
ध्यान देने योग्य कुछ बातें:
- Model.save
model.save()
की तरह,loadLayersModel
फ़ंक्शन एक URL-जैसा स्ट्रिंग तर्क लेता है जो एक योजना से शुरू होता है। यह उस गंतव्य के प्रकार का वर्णन करता है जिससे हम एक मॉडल लोड करने का प्रयास कर रहे हैं। - योजना का अनुसरण एक पथ द्वारा किया जाता है। पथ के ऊपर के उदाहरण में
my-model-1
है। - यूआरएल जैसी स्ट्रिंग को किसी ऑब्जेक्ट द्वारा प्रतिस्थापित किया जा सकता है जो IOHandler इंटरफ़ेस से मेल खाता है।
-
tf.loadLayersModel()
फ़ंक्शन अतुल्यकालिक है। -
tf.Model
का रिटर्न मानtf.loadLayersModel
है
नीचे हम उपलब्ध विभिन्न योजनाओं की जांच करेंगे।
स्थानीय संग्रहण (केवल ब्राउज़र)
योजना: localstorage://
const model = await tf.loadLayersModel('localstorage://my-model');
यह ब्राउज़र के स्थानीय संग्रहण से my-model
model नाम का एक मॉडल लोड करता है।
IndexedDB (केवल ब्राउज़र)
योजना: indexeddb://
const model = await tf.loadLayersModel('indexeddb://my-model');
यह ब्राउज़र के IndexedDB संग्रहण से एक मॉडल लोड करता है।
एचटीटीपी (एस)
योजना: http://
या https://
const model = await tf.loadLayersModel('http://model-server.domain/download/model.json');
यह एक http एंडपॉइंट से एक मॉडल लोड करता है। json
फ़ाइल लोड करने के बाद फ़ंक्शन संबंधित .bin
फ़ाइलों के लिए अनुरोध करेगा जो कि json
फ़ाइल संदर्भित करता है।
मूल फ़ाइल सिस्टम (केवल Node.js)
योजना: file://
const model = await tf.loadLayersModel('file://path/to/my-model/model.json');
Node.js पर चलते समय हमारे पास फाइल सिस्टम तक सीधी पहुंच भी होती है और हम वहां से मॉडल लोड कर सकते हैं। ध्यान दें कि ऊपर दिए गए फ़ंक्शन कॉल में हम model.json फ़ाइल को ही संदर्भित करते हैं (जबकि सहेजते समय हम एक फ़ोल्डर निर्दिष्ट करते हैं)। संबंधित .bin
फ़ाइल उसी फ़ोल्डर में होनी चाहिए जिसमें json
फ़ाइल होती है।
IOHandlers के साथ मॉडल लोड हो रहा है
यदि उपरोक्त योजनाएं आपकी आवश्यकताओं के लिए पर्याप्त नहीं हैं तो आप IOHandler
के साथ कस्टम लोडिंग व्यवहार लागू कर सकते हैं। TensorFlow.js द्वारा प्रदान किया जाने वाला एक IOHandler
tf.io.browserFiles
है जो ब्राउज़र उपयोगकर्ताओं को ब्राउज़र में मॉडल फ़ाइलें अपलोड करने की अनुमति देता है। अधिक जानकारी के लिए दस्तावेज़ीकरण देखें।
कस्टम IOHandlers के साथ मॉडल सहेजना और लोड करना
यदि उपरोक्त योजनाएँ आपकी लोडिंग या बचत आवश्यकताओं के लिए पर्याप्त नहीं हैं, तो आप IOHandler
को लागू करके कस्टम क्रमांकन व्यवहार को लागू कर सकते हैं।
एक IOHandler
एक ऑब्जेक्ट है जिसमें save
और load
विधि है।
save
फ़ंक्शन एक पैरामीटर लेता है जो मॉडलआर्टिफैक्ट्स इंटरफ़ेस से मेल खाता है और एक वादा वापस करना चाहिए जो एक SaveResult ऑब्जेक्ट को हल करता है।
load
फ़ंक्शन कोई पैरामीटर नहीं लेता है और एक वादा वापस करना चाहिए जो एक ModelArtifacts ऑब्जेक्ट को हल करता है। यह वही ऑब्जेक्ट है जिसे save
करने के लिए पास किया जाता है।
IOHandler को कार्यान्वित करने के तरीके के उदाहरण के लिए BrowserHTTPRequest देखें।
, TensorFlow.js उन मॉडलों को सहेजने और लोड करने के लिए कार्यक्षमता प्रदान करता है जो Layers
API के साथ बनाए गए हैं या मौजूदा TensorFlow मॉडल से परिवर्तित किए गए हैं। ये वे मॉडल हो सकते हैं जिन्हें आपने स्वयं प्रशिक्षित किया है या जिन्हें दूसरों द्वारा प्रशिक्षित किया गया है। लेयर्स एपीआई का उपयोग करने का एक प्रमुख लाभ यह है कि इसके साथ बनाए गए मॉडल क्रमबद्ध हैं और यही हम इस ट्यूटोरियल में देखेंगे।
यह ट्यूटोरियल TensorFlow.js मॉडल (JSON फ़ाइलों द्वारा पहचाने जाने योग्य) को सहेजने और लोड करने पर केंद्रित होगा। हम TensorFlow Python मॉडल भी आयात कर सकते हैं। इन मॉडलों को लोड करना निम्नलिखित दो ट्यूटोरियल में शामिल है:
एक tf.मॉडल सहेजें
tf.Model
और tf.Sequential
दोनों एक फ़ंक्शन प्रदान करते हैं model.save
जो आपको एक मॉडल के टोपोलॉजी और वजन को बचाने की अनुमति देता है।
टोपोलॉजी: यह एक मॉडल की वास्तुकला का वर्णन करने वाली एक फाइल है (यानी यह किस ऑपरेशन का उपयोग करता है)। इसमें मॉडल के वजन के संदर्भ होते हैं जो बाहरी रूप से संग्रहीत होते हैं।
वज़न: ये बाइनरी फ़ाइलें हैं जो किसी दिए गए मॉडल के वज़न को एक कुशल प्रारूप में संग्रहीत करती हैं। वे आम तौर पर टोपोलॉजी के समान फ़ोल्डर में संग्रहीत होते हैं।
आइए देखें कि मॉडल को बचाने के लिए कोड कैसा दिखता है
const saveResult = await model.save('localstorage://my-model-1');
ध्यान देने योग्य कुछ बातें:
-
save
मेथड एक यूआरएल-जैसे स्ट्रिंग तर्क लेता है जो एक योजना से शुरू होता है। यह उस गंतव्य के प्रकार का वर्णन करता है जिसमें हम एक मॉडल को सहेजने का प्रयास कर रहे हैं। योजना के ऊपर के उदाहरण मेंlocalstorage://
- योजना का अनुसरण एक पथ द्वारा किया जाता है। पथ के ऊपर के उदाहरण में
my-model-1
है। -
save
विधि अतुल्यकालिक है। -
model.save
का रिटर्न वैल्यू एक JSON ऑब्जेक्ट है जो मॉडल की टोपोलॉजी और वेट के बाइट साइज जैसी जानकारी को वहन करता है। - मॉडल को सहेजने के लिए उपयोग किया जाने वाला परिवेश मॉडल को लोड करने वाले परिवेशों को प्रभावित नहीं करता है। किसी मॉडल को नोड.जेएस में सहेजना उसे ब्राउज़र में लोड होने से नहीं रोकता है।
नीचे हम उपलब्ध विभिन्न योजनाओं की जांच करेंगे।
स्थानीय संग्रहण (केवल ब्राउज़र)
योजना: localstorage://
await model.save('localstorage://my-model');
यह ब्राउज़र के स्थानीय संग्रहण में my-model
नाम से एक मॉडल सहेजता है। यह रिफ्रेश के बीच बना रहेगा, हालांकि स्थानीय भंडारण को उपयोगकर्ताओं या ब्राउज़र द्वारा ही साफ़ किया जा सकता है यदि स्थान एक चिंता का विषय बन जाता है। प्रत्येक ब्राउज़र किसी दिए गए डोमेन के लिए स्थानीय संग्रहण में कितना डेटा संग्रहीत किया जा सकता है, इसकी अपनी सीमा भी निर्धारित करता है।
IndexedDB (केवल ब्राउज़र)
योजना: indexeddb://
await model.save('indexeddb://my-model');
यह एक मॉडल को ब्राउज़र के IndexedDB संग्रहण में सहेजता है। स्थानीय भंडारण की तरह यह ताज़ा करने के बीच बना रहता है, इसमें संग्रहीत वस्तुओं के आकार पर बड़ी सीमाएँ भी होती हैं।
फ़ाइल डाउनलोड (केवल ब्राउज़र)
योजना: downloads://
await model.save('downloads://my-model');
यह ब्राउज़र को उपयोगकर्ता की मशीन पर मॉडल फ़ाइलों को डाउनलोड करने का कारण बनेगा। दो फाइलें तैयार की जाएंगी:
-
[my-model].json
नाम की एक टेक्स्ट JSON फ़ाइल, जो नीचे वर्णित वज़न फ़ाइल के टोपोलॉजी और संदर्भ को वहन करती है। -
[my-model].weights.bin
नामक वज़न मान वाली बाइनरी फ़ाइल।
आप भिन्न नाम वाली फ़ाइलें प्राप्त करने के लिए [my-model]
नाम बदल सकते हैं।
चूँकि .json
फ़ाइल सापेक्ष पथ का उपयोग करके .bin
की ओर इशारा करती है, इसलिए दोनों फ़ाइलें एक ही फ़ोल्डर में होनी चाहिए।
HTTP (एस) अनुरोध
योजना: http://
या https://
await model.save('http://model-server.domain/upload')
यह एक मॉडल को दूरस्थ सर्वर पर सहेजने के लिए एक वेब अनुरोध बनाएगा। आपको उस रिमोट सर्वर के नियंत्रण में होना चाहिए ताकि आप यह सुनिश्चित कर सकें कि यह अनुरोध को संभालने में सक्षम है।
मॉडल को POST अनुरोध के माध्यम से निर्दिष्ट HTTP सर्वर पर भेजा जाएगा। POST की बॉडी multipart/form-data
फॉर्मेट में है और इसमें दो फाइलें हैं
-
model.json
नाम की एक टेक्स्ट JSON फ़ाइल, जो नीचे वर्णित वज़न फ़ाइल के टोपोलॉजी और संदर्भ को वहन करती है। -
model.weights.bin
नामक भार मान वाली एक बाइनरी फ़ाइल।
ध्यान दें कि दो फाइलों का नाम हमेशा ऊपर बताए अनुसार होगा (नाम फ़ंक्शन में बनाया गया है)। इस एपीआई दस्तावेज़ में एक पायथन कोड स्निपेट है जो दर्शाता है कि save
से उत्पन्न अनुरोध को संभालने के लिए फ्लास्क वेब फ्रेमवर्क का उपयोग कैसे किया जा सकता है।
अक्सर आपको अपने HTTP सर्वर पर अधिक तर्क या अनुरोध हेडर पास करने होंगे (उदाहरण के लिए प्रमाणीकरण के लिए या यदि आप एक फ़ोल्डर निर्दिष्ट करना चाहते हैं जिसमें मॉडल को सहेजा जाना चाहिए)। आप tf.io.browserHTTPRequest
में URL स्ट्रिंग तर्क को बदलकर save
से अनुरोधों के इन पहलुओं पर बढ़िया नियंत्रण प्राप्त कर सकते हैं। यह एपीआई HTTP अनुरोधों को नियंत्रित करने में अधिक लचीलापन प्रदान करता है।
उदाहरण के लिए:
await model.save(tf.io.browserHTTPRequest(
'http://model-server.domain/upload',
{method: 'PUT', headers: {'header_key_1': 'header_value_1'} }));
मूल फ़ाइल सिस्टम (केवल Node.js)
योजना: file://
await model.save('file:///path/to/my-model');
Node.js पर चलते समय हमारे पास फाइल सिस्टम तक सीधी पहुंच भी होती है और हम वहां मॉडल सहेज सकते हैं। उपरोक्त आदेश दो फाइलों को scheme
के बाद निर्दिष्ट path
पर सहेजेगा।
-
[model].json
नाम की एक टेक्स्ट JSON फ़ाइल, जो नीचे वर्णित वज़न फ़ाइल के टोपोलॉजी और संदर्भ को वहन करती है। -
[model].weights.bin
नामक भार मान वाली एक बाइनरी फ़ाइल।
ध्यान दें कि दो फाइलों का नाम हमेशा ऊपर बताए अनुसार होगा (नाम फ़ंक्शन में बनाया गया है)।
एक tf.Model लोड हो रहा है
उपरोक्त विधियों में से किसी एक का उपयोग करके सहेजे गए मॉडल को देखते हुए, हम इसे tf.loadLayersModel
API का उपयोग करके लोड कर सकते हैं।
आइए देखें कि मॉडल लोड करने के लिए कोड कैसा दिखता है
const model = await tf.loadLayersModel('localstorage://my-model-1');
ध्यान देने योग्य कुछ बातें:
- Model.save
model.save()
की तरह,loadLayersModel
फ़ंक्शन एक URL-जैसा स्ट्रिंग तर्क लेता है जो एक योजना से शुरू होता है। यह उस गंतव्य के प्रकार का वर्णन करता है जिससे हम एक मॉडल लोड करने का प्रयास कर रहे हैं। - योजना का अनुसरण एक पथ द्वारा किया जाता है। पथ के ऊपर के उदाहरण में
my-model-1
है। - यूआरएल जैसी स्ट्रिंग को किसी ऑब्जेक्ट द्वारा प्रतिस्थापित किया जा सकता है जो IOHandler इंटरफ़ेस से मेल खाता है।
-
tf.loadLayersModel()
फ़ंक्शन अतुल्यकालिक है। -
tf.Model
का रिटर्न मानtf.loadLayersModel
है
नीचे हम उपलब्ध विभिन्न योजनाओं की जांच करेंगे।
स्थानीय संग्रहण (केवल ब्राउज़र)
योजना: localstorage://
const model = await tf.loadLayersModel('localstorage://my-model');
यह ब्राउज़र के स्थानीय संग्रहण से my-model
model नाम का एक मॉडल लोड करता है।
IndexedDB (केवल ब्राउज़र)
योजना: indexeddb://
const model = await tf.loadLayersModel('indexeddb://my-model');
यह ब्राउज़र के IndexedDB संग्रहण से एक मॉडल लोड करता है।
एचटीटीपी (एस)
योजना: http://
या https://
const model = await tf.loadLayersModel('http://model-server.domain/download/model.json');
यह एक http एंडपॉइंट से एक मॉडल लोड करता है। json
फ़ाइल लोड करने के बाद फ़ंक्शन संबंधित .bin
फ़ाइलों के लिए अनुरोध करेगा जो कि json
फ़ाइल संदर्भित करता है।
मूल फ़ाइल सिस्टम (केवल Node.js)
योजना: file://
const model = await tf.loadLayersModel('file://path/to/my-model/model.json');
Node.js पर चलते समय हमारे पास फाइल सिस्टम तक सीधी पहुंच भी होती है और हम वहां से मॉडल लोड कर सकते हैं। ध्यान दें कि ऊपर दिए गए फ़ंक्शन कॉल में हम model.json फ़ाइल को ही संदर्भित करते हैं (जबकि सहेजते समय हम एक फ़ोल्डर निर्दिष्ट करते हैं)। संबंधित .bin
फ़ाइल उसी फ़ोल्डर में होनी चाहिए जिसमें json
फ़ाइल होती है।
IOHandlers के साथ मॉडल लोड हो रहा है
यदि उपरोक्त योजनाएं आपकी आवश्यकताओं के लिए पर्याप्त नहीं हैं तो आप IOHandler
के साथ कस्टम लोडिंग व्यवहार लागू कर सकते हैं। TensorFlow.js द्वारा प्रदान किया जाने वाला एक IOHandler
tf.io.browserFiles
है जो ब्राउज़र उपयोगकर्ताओं को ब्राउज़र में मॉडल फ़ाइलें अपलोड करने की अनुमति देता है। अधिक जानकारी के लिए दस्तावेज़ीकरण देखें।
कस्टम IOHandlers के साथ मॉडल सहेजना और लोड करना
यदि उपरोक्त योजनाएँ आपकी लोडिंग या बचत आवश्यकताओं के लिए पर्याप्त नहीं हैं, तो आप IOHandler
को लागू करके कस्टम क्रमांकन व्यवहार को लागू कर सकते हैं।
एक IOHandler
एक ऑब्जेक्ट है जिसमें save
और load
विधि है।
save
फ़ंक्शन एक पैरामीटर लेता है जो मॉडलआर्टिफैक्ट्स इंटरफ़ेस से मेल खाता है और एक वादा वापस करना चाहिए जो एक SaveResult ऑब्जेक्ट को हल करता है।
load
फ़ंक्शन कोई पैरामीटर नहीं लेता है और एक वादा वापस करना चाहिए जो एक ModelArtifacts ऑब्जेक्ट को हल करता है। यह वही ऑब्जेक्ट है जिसे save
करने के लिए पास किया जाता है।
IOHandler को कार्यान्वित करने के तरीके के उदाहरण के लिए BrowserHTTPRequest देखें।