सामान्य समस्याएं

यदि आपका मुद्दा यहां सूचीबद्ध नहीं है, तो कृपया नया मुद्दा भरने से पहले जीथब मुद्दों को खोजें।

लेखन त्रुटि: 'ऑटोट्रैकेबल' ऑब्जेक्ट कॉल करने योग्य नहीं है

# BAD: Raises error
embed = hub.load('https://tfhub.dev/google/nnlm-en-dim128/1')
embed(['my text', 'batch'])

टीएफ2 में hub.load() एपीआई के साथ टीएफ1 हब प्रारूप में मॉडल लोड करते समय यह त्रुटि अक्सर उत्पन्न होती है। सही हस्ताक्षर जोड़ने से यह समस्या ठीक हो जानी चाहिए। TF2 में जाने और TF2 में TF1 हब प्रारूप में मॉडल के उपयोग के बारे में अधिक जानकारी के लिए TF2 के लिए TF-हब माइग्रेशन गाइड देखें।


embed = hub.load('https://tfhub.dev/google/nnlm-en-dim128/1')
embed.signatures['default'](['my text', 'batch'])

मॉड्यूल डाउनलोड नहीं किया जा सकता

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

  • "ईओएफ प्रोटोकॉल के उल्लंघन में हुआ" - यह समस्या उत्पन्न होने की संभावना है यदि स्थापित पायथन संस्करण मॉड्यूल को होस्ट करने वाले सर्वर की टीएलएस आवश्यकताओं का समर्थन नहीं करता है। विशेष रूप से, Python 2.7.5 को tfhub.dev डोमेन से मॉड्यूल को हल करने में विफल होने के लिए जाना जाता है। समाधान : कृपया नए पायथन संस्करण में अपडेट करें।

  • "tfhub.dev के प्रमाणपत्र को सत्यापित नहीं कर सकता" - यदि नेटवर्क पर कोई चीज़ डेव gTLD के रूप में कार्य करने का प्रयास कर रही है तो यह समस्या उत्पन्न होने की संभावना है। इससे पहले कि .dev को gTLD के रूप में उपयोग किया जाता था, डेवलपर्स और फ्रेमवर्क कभी-कभी परीक्षण कोड में सहायता के लिए .dev नामों का उपयोग करते थे। FIX: उस सॉफ़्टवेयर को पहचानें और पुन: कॉन्फ़िगर करें जो ".dev" डोमेन में नाम रिज़ॉल्यूशन को रोकता है।

  • कैश निर्देशिका /tmp/tfhub_modules (या समान) में लिखने में विफलता: यह क्या है और इसका स्थान कैसे बदला जाए, इसके लिए कैशिंग देखें।

यदि उपरोक्त त्रुटियां और सुधार काम नहीं करते हैं, तो कोई टार संपीड़ित फ़ाइल डाउनलोड करने के लिए यूआरएल में ?tf-hub-format=compressed संलग्न करने के प्रोटोकॉल का अनुकरण करके मैन्युअल रूप से एक मॉड्यूल डाउनलोड करने का प्रयास कर सकता है जिसे स्थानीय रूप से मैन्युअल रूप से डीकंप्रेस किया जाना है। फ़ाइल। फिर URL के स्थान पर स्थानीय फ़ाइल के पथ का उपयोग किया जा सकता है। यहाँ एक त्वरित उदाहरण है:

# Create a folder for the TF hub module.
$ mkdir /tmp/moduleA
# Download the module, and uncompress it to the destination folder. You might want to do this manually.
$ curl -L "https://tfhub.dev/google/universal-sentence-encoder/2?tf-hub-format=compressed" | tar -zxvC /tmp/moduleA
# Test to make sure it works.
$ python
> import tensorflow_hub as hub
> hub.Module("/tmp/moduleA")

पूर्व-प्रारंभिक मॉड्यूल पर चल रहा अनुमान

यदि आप एक पायथन प्रोग्राम लिख रहे हैं जो इनपुट डेटा पर एक मॉड्यूल को कई बार लागू करता है, तो आप निम्नलिखित व्यंजनों को लागू कर सकते हैं। (नोट: उत्पादन सेवाओं में अनुरोधों को पूरा करने के लिए, टेन्सरफ्लो सर्विंग या अन्य स्केलेबल, पायथन-मुक्त समाधानों पर विचार करें।)

यह मानते हुए कि आपका उपयोग-मामला मॉडल आरंभीकरण और उसके बाद के अनुरोधों (उदाहरण के लिए Django, फ्लास्क, कस्टम HTTP सर्वर, आदि) है, आप निम्न प्रकार से सर्विंग सेट-अप कर सकते हैं:

TF2 सहेजे गए मॉडल

  • आरंभीकरण भाग में:
    • TF2.0 मॉडल लोड करें.
import tensorflow_hub as hub

embedding_fn = hub.load("https://tfhub.dev/google/universal-sentence-encoder/4")
  • अनुरोध भाग में:
    • अनुमान चलाने के लिए एम्बेडिंग फ़ंक्शन का उपयोग करें।
embedding_fn(["Hello world"])

tf.function की यह कॉल प्रदर्शन के लिए अनुकूलित है, tf.function मार्गदर्शिका देखें।

TF1 हब मॉड्यूल

  • आरंभीकरण भाग में:
    • प्लेसहोल्डर के साथ ग्राफ़ बनाएं - ग्राफ़ में प्रवेश बिंदु।
    • सत्र प्रारंभ करें.
import tensorflow as tf
import tensorflow_hub as hub

# Create graph and finalize (finalizing optional but recommended).
g = tf.Graph()
with g.as_default():
  # We will be feeding 1D tensors of text into the graph.
  text_input = tf.placeholder(dtype=tf.string, shape=[None])
  embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/2")
  embedded_text = embed(text_input)
  init_op = tf.group([tf.global_variables_initializer(), tf.tables_initializer()])
g.finalize()

# Create session and initialize.
session = tf.Session(graph=g)
session.run(init_op)
  • अनुरोध भाग में:
    • प्लेसहोल्डर के माध्यम से ग्राफ़ में डेटा फ़ीड करने के लिए सत्र का उपयोग करें।
result = session.run(embedded_text, feed_dict={text_input: ["Hello world"]})

किसी मॉडल का dtype नहीं बदल सकता (उदाहरण के लिए, फ्लोट32 से bfloat16)

TensorFlow के SavedModels (TF हब या अन्यथा पर साझा किए गए) में ऐसे ऑपरेशन होते हैं जो निश्चित डेटा प्रकारों पर काम करते हैं (अक्सर, तंत्रिका नेटवर्क के वजन और मध्यवर्ती सक्रियण के लिए फ्लोट32)। इस तथ्य के बाद सेव्डमॉडल लोड करते समय इन्हें बदला नहीं जा सकता है (लेकिन मॉडल प्रकाशक अलग-अलग डेटा प्रकारों के साथ अलग-अलग मॉडल प्रकाशित करना चुन सकते हैं)।

एक मॉडल संस्करण अद्यतन करें

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