সাধারণ সমস্যা

যদি আপনার সমস্যাটি এখানে তালিকাভুক্ত না থাকে, তাহলে অনুগ্রহ করে নতুন একটি পূরণ করার আগে গিথুব সমস্যাগুলি অনুসন্ধান করুন৷

TypeError: 'AutoTrackable' বস্তু কলযোগ্য নয়

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

TF2 এ hub.load() API এর সাথে TF1 হাব ফরম্যাটে মডেল লোড করার সময় এই ত্রুটিটি প্রায়শই দেখা দেয়। সঠিক স্বাক্ষর যোগ করলে এই সমস্যার সমাধান করা উচিত। TF2-এ যাওয়া এবং TF2-এ TF1 হাব ফর্ম্যাটে মডেলের ব্যবহার সম্পর্কে আরও বিশদ বিবরণের জন্য TF2-এর জন্য TF-Hub মাইগ্রেশন গাইড দেখুন।


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

একটি মডিউল ডাউনলোড করতে পারবেন না

একটি ইউআরএল থেকে একটি মডিউল ব্যবহার করার প্রক্রিয়াতে নেটওয়ার্ক স্ট্যাকের কারণে অনেক ত্রুটি দেখা দিতে পারে। প্রায়শই এটি কোড চালানোর মেশিনের জন্য একটি নির্দিষ্ট সমস্যা এবং লাইব্রেরির সমস্যা নয়। এখানে সাধারণগুলির একটি তালিকা রয়েছে:

  • "ইওএফ প্রোটোকল লঙ্ঘনের কারণে ঘটেছে" - যদি ইনস্টল করা পাইথন সংস্করণটি মডিউল হোস্ট করা সার্ভারের TLS প্রয়োজনীয়তাগুলিকে সমর্থন না করে তবে এই সমস্যাটি তৈরি হতে পারে৷ উল্লেখযোগ্যভাবে, python 2.7.5 tfhub.dev ডোমেইন থেকে মডিউলগুলি সমাধান করতে ব্যর্থ বলে পরিচিত। ফিক্স : একটি নতুন পাইথন সংস্করণে আপডেট করুন।

  • "tfhub.dev-এর শংসাপত্র যাচাই করতে পারে না" - নেটওয়ার্কে কিছু dev gTLD হিসাবে কাজ করার চেষ্টা করলে এই সমস্যাটি তৈরি হতে পারে। .dev-কে একটি gTLD হিসেবে ব্যবহার করার আগে, ডেভেলপার এবং ফ্রেমওয়ার্ক কখনও কখনও .dev নাম ব্যবহার করে কোড পরীক্ষা করতে সাহায্য করত। ফিক্স: ".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")

প্রি-ইনিশিয়ালাইজড মডিউলে অনুমান চালানো হচ্ছে

আপনি যদি একটি পাইথন প্রোগ্রাম লিখছেন যা ইনপুট ডেটাতে একটি মডিউল অনেকবার প্রয়োগ করে, আপনি নিম্নলিখিত রেসিপিগুলি প্রয়োগ করতে পারেন। (দ্রষ্টব্য: উত্পাদন পরিষেবাগুলিতে অনুরোধ পরিবেশনের জন্য, টেনসরফ্লো সার্ভিং বা অন্যান্য মাপযোগ্য, পাইথন-মুক্ত সমাধানগুলি বিবেচনা করুন৷)

ধরে নিলাম আপনার ইউজ-কেস মডেল হল আরম্ভ এবং পরবর্তী অনুরোধগুলি (উদাহরণস্বরূপ জ্যাঙ্গো, ফ্লাস্ক, কাস্টম 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"]})

একটি মডেলের টাইপ পরিবর্তন করা যাবে না (যেমন, float32 থেকে bfloat16)

TensorFlow-এর SavedModels (TF Hub-এ শেয়ার করা বা অন্যথায়) এমন ক্রিয়াকলাপ ধারণ করে যা নির্দিষ্ট ডেটা টাইপের উপর কাজ করে (প্রায়শই, নিউরাল নেটওয়ার্কের ওজন এবং মধ্যবর্তী অ্যাক্টিভেশনের জন্য float32)। SavedModel লোড করার সময় এগুলি পরিবর্তন করা যাবে না (কিন্তু মডেল প্রকাশকরা বিভিন্ন ডেটা প্রকারের সাথে বিভিন্ন মডেল প্রকাশ করতে বেছে নিতে পারেন)।

একটি মডেল সংস্করণ আপডেট করুন

মডেল সংস্করণের ডকুমেন্টেশন মেটাডেটা আপডেট করা যেতে পারে। যাইহোক, সংস্করণের সম্পদ (মডেল ফাইল) অপরিবর্তনীয়। আপনি মডেল সম্পদ পরিবর্তন করতে চান, আপনি মডেলের একটি নতুন সংস্করণ প্রকাশ করতে পারেন. এটি একটি পরিবর্তন লগ সহ ডকুমেন্টেশন প্রসারিত করার একটি ভাল অভ্যাস যা বর্ণনা করে যে সংস্করণগুলির মধ্যে কী পরিবর্তন হয়েছে৷