एक सहेजा गया मॉडल निर्यात करें

इस पृष्ठ के लिए एक TensorFlow कार्यक्रम से निर्यात (बचत) एक मॉडल के विवरण का वर्णन करता है TensorFlow 2 की SavedModel प्रारूप । यह प्रारूप TensorFlow हब पर पूर्व-प्रशिक्षित मॉडल और मॉडल के टुकड़े साझा करने का अनुशंसित तरीका है। यह पुराने की जगह TF1 हब प्रारूप और एपीआई का एक नया सेट के साथ आता है। आप में TF1 हब प्रारूप मॉडल के निर्यात के बारे में अधिक जानकारी प्राप्त कर सकते TF1 हब प्रारूप निर्यात । आप कैसे TensorFlow हब पर यह साझा करने के लिए SavedModel संपीड़ित करने के लिए पर जानकारी प्राप्त कर सकते यहाँ

कुछ मॉडल निर्माण उपकरणकिटें पहले से ही यह करने के लिए उपकरण प्रदान करते हैं (जैसे, के लिए नीचे देखें TensorFlow मॉडल गार्डन )।

अवलोकन

SavedModel प्रशिक्षित मॉडल या मॉडल के टुकड़ों के लिए TensorFlow का मानक क्रमांकन प्रारूप है। यह गणना करने के लिए सटीक TensorFlow संचालन के साथ मॉडल के प्रशिक्षित वजन को एक साथ संग्रहीत करता है। इसे उस कोड से स्वतंत्र रूप से उपयोग किया जा सकता है जिसने इसे बनाया है। विशेष रूप से, इसे केरस जैसे विभिन्न उच्च-स्तरीय मॉडल-बिल्डिंग एपीआई में पुन: उपयोग किया जा सकता है, क्योंकि TensorFlow संचालन उनकी सामान्य बुनियादी भाषा है।

केरासो से बचत

TensorFlow 2, के साथ शुरू tf.keras.Model.save() और tf.keras.models.save_model() SavedModel प्रारूप (नहीं HDF5) करने के लिए डिफ़ॉल्ट। जिसके परिणामस्वरूप SavedModels उस के साथ इस्तेमाल किया जा सकता hub.load() , hub.KerasLayer और अन्य उच्च स्तर एपीआई के लिए समान एडाप्टर के रूप में वे उपलब्ध हो जाते हैं।

बस इसे बचाने के साथ एक पूर्ण Keras मॉडल साझा करने के लिए include_optimizer=False

केरस मॉडल के एक टुकड़े को साझा करने के लिए, टुकड़े को अपने आप में एक मॉडल बनाएं और फिर उसे सेव करें। आप या तो इस तरह के कोड को शुरू से ही रख सकते हैं ....

piece_to_share = tf.keras.Model(...)
full_model = tf.keras.Sequential([piece_to_share, ...])
full_model.fit(...)
piece_to_share.save(...)

... या तथ्य के बाद साझा करने के लिए टुकड़ा काट लें (यदि यह आपके पूर्ण मॉडल की परत के साथ संरेखित है):

full_model = tf.keras.Model(...)
sharing_input = full_model.get_layer(...).get_output_at(0)
sharing_output = full_model.get_layer(...).get_output_at(0)
piece_to_share = tf.keras.Model(sharing_input, sharing_output)
piece_to_share.save(..., include_optimizer=False)

TensorFlow मॉडल GitHub पर बर्ट के लिए पूर्व दृष्टिकोण (देखें उपयोग करता NLP / उपकरण / export_tfhub_lib.py , के बीच विभाजन ध्यान दें core_model निर्यात के लिए और pretrainer चौकी बहाल करने के लिए) और ResNet के लिए बाद दृष्टिकोण (देखें विरासत / image_classification / tfhub_export। py )।

निम्न-स्तरीय TensorFlow से सहेजा जा रहा है

यह TensorFlow के साथ अच्छे अपनेपन की आवश्यकता है SavedModel गाइड

तुम सिर्फ एक सेवारत हस्ताक्षर की तुलना में अधिक प्रदान करना चाहते हैं, तो आप को लागू करना चाहिए पुन: प्रयोज्य SavedModel इंटरफ़ेस । संकल्पनात्मक रूप से, ऐसा दिखता है

class MyMulModel(tf.train.Checkpoint):
  def __init__(self, v_init):
    super().__init__()
    self.v = tf.Variable(v_init)
    self.variables = [self.v]
    self.trainable_variables = [self.v]
    self.regularization_losses = [
        tf.function(input_signature=[])(lambda: 0.001 * self.v**2),
    ]

  @tf.function(input_signature=[tf.TensorSpec(shape=None, dtype=tf.float32)])
  def __call__(self, inputs):
    return tf.multiply(inputs, self.v)

tf.saved_model.save(MyMulModel(2.0), "/tmp/my_mul")

layer = hub.KerasLayer("/tmp/my_mul")
print(layer([10., 20.]))  # [20., 40.]
layer.trainable = True
print(layer.trainable_weights)  # [2.]
print(layer.losses)  # 0.004

सहेजे गए मॉडल निर्माताओं के लिए सलाह

TensorFlow हब पर साझा करने के लिए एक सहेजा गया मॉडल बनाते समय, आगे सोचें कि क्या और कैसे इसके उपभोक्ताओं को इसे ठीक करना चाहिए, और दस्तावेज़ीकरण में मार्गदर्शन प्रदान करना चाहिए।

एक Keras मॉडल से सहेजा जा रहा है ठीक करने के काम के सभी यांत्रिकी बनाना चाहिए (वजन नियमितीकरण नुकसान बचत, trainable चर घोषित करने, अनुरेखण __call__ दोनों के लिए training=True और training=False , आदि)

एक मॉडल इंटरफ़ेस चुनें जो ग्रेडिएंट फ़्लो के साथ अच्छी तरह से चलता हो, उदाहरण के लिए, सॉफ्टमैक्स संभावनाओं या टॉप-के पूर्वानुमानों के बजाय आउटपुट लॉग।

यदि मॉडल ड्रॉपआउट, बैच सामान्यीकरण, या इसी तरह की प्रशिक्षण तकनीकों का उपयोग करता है जिसमें हाइपरपैरामीटर शामिल हैं, तो उन्हें उन मानों पर सेट करें जो कई अपेक्षित लक्ष्य समस्याओं और बैच आकारों में समझ में आते हैं। (इस लेखन के समय, केरस से बचत करना उपभोक्ताओं को उन्हें समायोजित करने देना आसान नहीं बनाता है।)

अलग-अलग परतों पर भार regularizers सहेजे जाते हैं (उनके नियमितीकरण शक्ति गुणांक के साथ), लेकिन वजन नियमितीकरण अनुकूलक के भीतर से (जैसे tf.keras.optimizers.Ftrl.l1_regularization_strength=...) ) खो दिया है। अपने सहेजे गए मॉडल के उपभोक्ताओं को तदनुसार सलाह दें।

टेंसरफ्लो मॉडल गार्डन

TensorFlow मॉडल गार्डन रेपो पुन: प्रयोज्य TF2 सहेजी गयी मॉडल बनाने के उदाहरण का एक बहुत पर अपलोड करने के लिए होता है tfhub.dev

समुदाय अनुरोध

TensorFlow हब टीम केवल संपत्ति है कि पर उपलब्ध हैं की एक छोटा सा अंश उत्पन्न tfhub.dev। हम मॉडल बनाने के लिए मुख्य रूप से Google और डीपमाइंड के शोधकर्ताओं, कॉर्पोरेट और अकादमिक शोध संस्थानों और एमएल उत्साही पर भरोसा करते हैं। परिणामस्वरूप, हम इस बात की गारंटी नहीं दे सकते कि हम विशिष्ट संपत्तियों के लिए समुदाय के अनुरोधों को पूरा कर सकते हैं, और हम नई संपत्ति की उपलब्धता के लिए समय अनुमान प्रदान नहीं कर सकते।

सामुदायिक मॉडल अनुरोध मील का पत्थर नीचे विशिष्ट परिसंपत्तियों के लिए समुदाय से अनुरोध शामिल हैं - अगर आप या आपका कोई परिचित संपत्ति उत्पादन और पर साझा में रुचि रखता हैtfhub.dev, हम प्रस्तुत करने का स्वागत करते हैं!