এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে যে টেনসরফ্লো 1 থেকে টেনসরফ্লো 2 তে আপনার টেনসরফ্লো কোডটি স্থানান্তর করার সময় টেনসরফ্লো হাবটি কীভাবে ব্যবহার করা যায় এটি টেনসরফ্লো এর সাধারণ মাইগ্রেশন গাইডকে পরিপূরক করে।
টিএফ 2-এর জন্য, টিএফ hub.Module
লিগ্যাসি hub.Module
থেকে সরে গেছে tf.compat.v1.Graph
tf.contrib.v1.layers
. tf.contrib.v1.layers
tf.compat.v1.Graph
মতো tf.contrib.v1.layers
জন্য hub.Module
এপিআই। পরিবর্তে, এখন tf.keras.Model
(সাধারণত tf.keras.Model
এর নতুন hub.load()
পরিবেশে ) hub.KerasLayer
জন্য অন্যান্য কেরাস স্তরগুলির পাশাপাশি একটি tf.keras.Model
এবং নিম্ন-স্তরের টেনসরফ্লো কোডের জন্য এর অন্তর্নিহিত hub.load()
পদ্ধতি রয়েছে।
টিএফ 1 এবং টিএফ 2 এর টিএফ 1 সামঞ্জস্যতা মোডে hub.Module
এপিআই tensorflow_hub
লাইব্রেরিতে উপলব্ধ। এটি কেবলমাত্র টিএফ 1 হাব ফর্ম্যাটে মডেলগুলি লোড করতে পারে।
এর নতুন API hub.load()
এবং hub.KerasLayer
TensorFlow 1.15 জন্য কাজ এই নতুন API (উৎসুক এবং গ্রাফ মোডে) এবং TensorFlow 2. নতুন লোড করতে পারেন TF2 SavedModel সঙ্গে বিধিনিষেধ পরিপূর্ণ সম্পদ, এবং, মডেল সামঞ্জস্যতা গাইড , টিএফ 1 হাব বিন্যাসে উত্তরাধিকার মডেল।
সাধারণভাবে, যেখানেই সম্ভব নতুন এপিআই ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
নতুন এপিআই এর সংক্ষিপ্তসার
hub.load()
হাব (বা সামঞ্জস্যপূর্ণ পরিষেবাদি) থেকে একটি সেভডমডেল লোড করার জন্য hub.load()
নতুন নিম্ন-স্তরের ফাংশন। এটি tf.saved_model.load()
এর tf.saved_model.load()
কে tf.saved_model.load()
; টেনসরফ্লো এর সেভডমডেল গাইড আপনাকে ফলাফলটি দিয়ে কী করতে পারে তা বর্ণনা করে।
m = hub.load(handle)
outputs = m(inputs)
hub.KerasLayer
বর্গ hub.load()
কল করে এবং hub.load()
অন্যান্য কেরাস স্তরগুলির সাথে ব্যবহারের জন্য ফলাফলটি গ্রহণ করে। (এটি অন্যান্য উপায়ে ব্যবহৃত লোভিত সেভডমডেলগুলির জন্য একটি সুবিধাজনক মোড়কও হতে পারে))
model = tf.keras.Sequential([
hub.KerasLayer(handle),
...])
অনেক টিউটোরিয়াল এই এপিআইগুলিকে কার্যত দেখায়। বিশেষভাবে দেখুন
অনুমান প্রশিক্ষণে নতুন এপিআই ব্যবহার করা
আপনি যদি প্যারামিটার সার্ভারগুলির সাথে প্রশিক্ষণের জন্য কোনও अनुमानকটিতে টিএফ 2 সেভডমডেল ব্যবহার করেন (বা অন্যথায় রিমোট ডিভাইসগুলিতে থাকা ভেরিয়েবলগুলির সাথে টিএফ 1 সেশনে), আপনাকে টিএফ.সেশনের কনফিগারপ্রোটোতে experimental.share_cluster_devices_in_session
সেট করতে হবে, অন্যথায় আপনি একটি ত্রুটি পাবেন "অর্পিত ডিভাইস '/ কাজ: পিএস / প্রতিলিপি: 0 / কার্য: 0 / ডিভাইস: সিপিইউ: 0' কোনও ডিভাইসের সাথে মেলে না।"
প্রয়োজনীয় বিকল্পটি সেট করা যেতে পারে
session_config = tf.compat.v1.ConfigProto()
session_config.experimental.share_cluster_devices_in_session = True
run_config = tf.estimator.RunConfig(..., session_config=session_config)
estimator = tf.estimator.Estimator(..., config=run_config)
TF2.2 দিয়ে শুরু করে, এই বিকল্পটি এখন আর পরীক্ষামূলক নয় এবং .experimental
টুকরোটি বাদ দেওয়া যাবে।
টিএফ 1 হাব ফর্ম্যাটে উত্তরাধিকারের মডেলগুলি লোড করা হচ্ছে
এটি ঘটতে পারে যে আপনার ব্যবহারের ক্ষেত্রে একটি নতুন টিএফ 2 সেভডমডেল এখনও উপলভ্য নয় এবং আপনাকে টিএফ 1 হাব ফর্ম্যাটে কোনও উত্তরাধিকার মডেল লোড করতে হবে। tensorflow_hub
রিলিজ 0.7 থেকে শুরু করে, আপনি টিএফ 1 হাব ফর্ম্যাটে হাবের সাথে একত্রে উত্তরাধিকার মডেলটি ব্যবহার করতে পারেন hub.KerasLayer
নীচে প্রদর্শিত হিসাবে:
অতিরিক্তভাবে KerasLayer
টিএফ 1 হাব ফর্ম্যাট এবং লিগ্যাসি সেভডমোডেলসে লিগ্যাসি মডেলের আরও নির্দিষ্ট ব্যবহারের জন্য tags
, signature
, output_key
এবং signature_outputs_as_dict
নির্দিষ্ট করার ক্ষমতা প্রকাশ করে।
টিএফ 1 হাব বিন্যাসের সামঞ্জস্যের বিষয়ে আরও তথ্যের জন্য মডেলটির সামঞ্জস্যতা গাইডটি দেখুন ।
নিম্ন স্তরের এপিআই ব্যবহার করে
লিগ্যাসি টিএফ 1 হাব বিন্যাসের মডেলগুলি tf.saved_model.load
মাধ্যমে লোড করা tf.saved_model.load
। পরিবর্তে
# DEPRECATED: TensorFlow 1
m = hub.Module(handle, tags={"foo", "bar"})
tensors_out_dict = m(dict(x1=..., x2=...), signature="sig", as_dict=True)
এটি ব্যবহার করার পরামর্শ দেওয়া হয়:
# TensorFlow 2
m = hub.load(path, tags={"foo", "bar"})
tensors_out_dict = m.signatures["sig"](x1=..., x2=...)
এই উদাহরণগুলিতে m.signatures
হ'ল স্বাক্ষরের নাম অনুসারে টেনসরফ্লো কংক্রিট ফাংশনগুলির একটি ডিক। এই জাতীয় ফাংশন কল করা অব্যবহৃত হলেও তার সমস্ত আউটপুটগুলি গণনা করে। (এটি টিএফ 1 এর গ্রাফ মোডের অলস মূল্যায়নের চেয়ে আলাদা))