This page was translated by the Cloud Translation API.
Switch to English

টিএফ 1 হাব ফর্ম্যাট

2018 এর প্রবর্তনকালে, টেনসরফ্লো হাব একক ধরণের সম্পদ সরবরাহ করেছিল: টেনসরফ্লো 1 প্রোগ্রামগুলিতে আমদানির জন্য টিএফ 1 হাব বিন্যাস।

এই পৃষ্ঠাটি কীভাবে টিএফ 1 (বা টিএফ 2 এর টিএফ 1 সামঞ্জস্যতা মোড) টি টিএফ 1 হাব ফর্ম্যাটটি হাব hub.Module ক্লাস এবং সম্পর্কিত এপিআইএস দিয়ে ব্যবহার করবেন তা hub.Module । (সাধারণত ব্যবহার নির্মাণ করা হয় tf.Graph , সম্ভবত একটি TF1 ভিতরে Estimator , সঙ্গে TF1 হাব বিন্যাসে এক বা একাধিক মডেলের মিশ্রন দ্বারা tf.compat.layers বা tf.layers )।

টেনসরফ্লো 2 (টিএফ 1 সামঞ্জস্য মোডের বাইরের) ব্যবহারকারীদের অবশ্যই hub.load() বা hub.KerasLayer সাথে নতুন এপিআই ব্যবহার করতে হবে। নতুন এপিআই নতুন টিএফ 2 সেভডমডেল সম্পদ প্রকারটি লোড করে, তবে টিএফ 1 হাব ফর্ম্যাট টিএফ 2 এ লোড করার ক্ষেত্রেও সীমিত সমর্থন রয়েছে।

টিএফ 1 হাব ফর্ম্যাটে একটি মডেল ব্যবহার করা

টিএফ 1 হাব ফর্ম্যাটে একটি মডেল ইনস্ট্যান্ট করছে

টিএফ 1 হাব বিন্যাসের একটি মডেল একটি ইউআরএল বা ফাইল সিস্টেমের পথ দিয়ে একটি স্ট্রিং থেকে একটি hub.Module অবজেক্ট তৈরি করে একটি hub.Module প্রোগ্রামে আমদানি করা হয়, যেমন:

 m = hub.Module("path/to/a/module_dir")
 

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

মডিউলগুলি ক্যাচিং করছে

কোনও ইউআরএল থেকে মডিউল তৈরি করার সময়, মডিউল সামগ্রীটি স্থানীয় সিস্টেমের অস্থায়ী ডিরেক্টরিতে ডাউনলোড এবং ক্যাশে করা হয়। মডিউলগুলি ক্যাশে করা TFHUB_CACHE_DIR পরিবেশ পরিবর্তনশীল ব্যবহার করে ওভাররাইড করা যেতে পারে TFHUB_CACHE_DIR বিশদ জন্য, ক্যাচিং দেখুন

একটি মডিউল প্রয়োগ করা হচ্ছে

একবার instantiated, একটি মডিউল m শূন্য বা তার বেশি বার টেন্সর আউটপুট টেন্সর ইনপুট থেকে একটি পাইথন ফাংশন মত বলা যেতে পারে:

 y = m(x)
 

এই জাতীয় প্রতিটি কল x থেকে y গণনা করতে বর্তমান টেনসরফ্লো গ্রাফটিতে ক্রিয়াকলাপ যুক্ত করে। যদি এটিতে প্রশিক্ষিত ওজনের সাথে ভেরিয়েবল জড়িত থাকে তবে এগুলি সমস্ত অ্যাপ্লিকেশনের মধ্যে ভাগ করা হয়।

একাধিক উপায়ে প্রয়োগ করার অনুমতি দেওয়ার জন্য মডিউলগুলি একাধিক নামযুক্ত স্বাক্ষর সংজ্ঞায়িত করতে পারে (পাইথন অবজেক্টগুলির পদ্ধতিগুলির মতোই)। একটি মডিউল এর ডকুমেন্টেশন উপলব্ধ স্বাক্ষর বর্ণনা করা উচিত। উপরের কলটি "default" নামের স্বাক্ষর প্রয়োগ করে। কোনও স্বাক্ষর তার নামটি al signature= যুক্তির সাথে প্রেরণ করে নির্বাচন করা যেতে পারে।

যদি স্বাক্ষরটির একাধিক ইনপুট থাকে তবে তাদের স্বাক্ষর দ্বারা সংজ্ঞায়িত কীগুলি সহ ডিক হিসাবে পাস করতে হবে। অনুরূপভাবে, যদি স্বাক্ষরটির একাধিক আউটপুট থাকে তবে এগুলি as_dict=True দিয়ে পাস করার মাধ্যমে ডিক হিসাবে পুনরুদ্ধার করা যেতে পারে, স্বাক্ষর দ্বারা নির্ধারিত কীগুলির অধীনে (কী "default" একক আউটপুট হিসাবে as_dict=False ফিরে আসে) as_dict=False সুতরাং মডিউল প্রয়োগের সর্বাধিক সাধারণ রূপটি দেখতে:

 outputs = m(dict(apples=x1, oranges=x2), signature="fruit_to_pet", as_dict=True)
y1 = outputs["cats"]
y2 = outputs["dogs"]
 

একজন কলকারীকে অবশ্যই স্বাক্ষর দ্বারা সংজ্ঞায়িত সমস্ত ইনপুট সরবরাহ করতে হবে তবে মডিউলের সমস্ত আউটপুট ব্যবহার করার প্রয়োজন নেই। টেনসরফ্লো কেবলমাত্র মডিউলটির সেই অংশগুলি চালিত করবে যা tf.Session.run() একটি টার্গেটের নির্ভরতা হিসাবে শেষ হয়। প্রকৃতপক্ষে, মডিউল প্রকাশকরা প্রধান আউটপুটগুলির সাথে উন্নত ব্যবহারের জন্য (মধ্যবর্তী স্তরগুলির সক্রিয়করণের মতো) বিভিন্ন আউটপুট সরবরাহ করতে পছন্দ করতে পারেন। মডিউল গ্রাহকদের অতিরিক্ত আউটপুটগুলি কৌতুকপূর্ণভাবে পরিচালনা করতে হবে।

বিকল্প মডিউল চেষ্টা করে

যখনই একই কাজের জন্য একাধিক মডিউল থাকে, টেনসরফ্লো হাব তাদের সামঞ্জস্যপূর্ণ স্বাক্ষরগুলি (ইন্টারফেস) দিয়ে সজ্জিত করতে উত্সাহ দেয় যেমন বিভিন্ন স্ট্রিং-মূল্যবান হাইপারপ্যারামিটার হিসাবে মডিউল হ্যান্ডেল পরিবর্তিত করার মতো বিভিন্নরকম সহজ।

এই লক্ষ্যে, আমরা জনপ্রিয় কাজের জন্য প্রস্তাবিত সাধারণ স্বাক্ষরগুলির একটি সংগ্রহ বজায় রাখি।

একটি নতুন মডিউল তৈরি করা হচ্ছে

সামঞ্জস্য নোট

টিএনএফ 1 হাব ফর্ম্যাটটি টেনসরফ্লো 1 এর দিকে তত্পর হয় এটি টেনসরফ্লোতে টিএফ হাব দ্বারা আংশিকভাবে সমর্থিত ২। দয়া করে পরিবর্তে নতুন টিএফ 2 সেভডমোডেল ফর্ম্যাটে প্রকাশ করার বিষয়টি বিবেচনা করবেন না।

টিএফ 1 হাব বিন্যাসটি সিনট্যাকটিক স্তর (একই ফাইলের নাম এবং প্রোটোকল বার্তাগুলি) তে টেনসরফ্লো 1 এর সেভডমোডেল বিন্যাসের অনুরূপ তবে মডিউল পুনরায় ব্যবহার, রচনা এবং পুনরায় প্রশিক্ষণের অনুমতি দেওয়ার জন্য শব্দার্থগতভাবে পৃথক (যেমন, সংস্থান আরম্ভের পৃথক স্টোরেজ, ভিন্ন ট্যাগিং) মেটাগ্রাফের জন্য সম্মেলন)। ডিস্কে tfhub_module.pb দেওয়ার সহজ tfhub_module.pb হল tfhub_module.pb ফাইলটির উপস্থিতি বা অনুপস্থিতি।

সাধারণ পদ্ধতির

একটি নতুন মডিউল নির্ধারণ করতে, একজন প্রকাশক আহ্বান hub.create_module_spec() একটি ফাংশন সঙ্গে module_fn । এই ফাংশনটি tf.placeholder() দ্বারা সরবরাহ করা ইনপুটগুলির জন্য tf.placeholder() ব্যবহার করে মডিউলটির অভ্যন্তরীণ কাঠামোর প্রতিনিধিত্ব করে একটি গ্রাফ তৈরি করে। তারপরে এটি hub.add_signature(name, inputs, outputs) এক বা hub.add_signature(name, inputs, outputs) কল করে স্বাক্ষরগুলি সংজ্ঞায়িত করে।

উদাহরণ স্বরূপ:

 def module_fn():
  inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
  layer1 = tf.layers.dense(inputs, 200)
  layer2 = tf.layers.dense(layer1, 100)
  outputs = dict(default=layer2, hidden_activations=layer1)
  # Add default signature.
  hub.add_signature(inputs=inputs, outputs=outputs)

...
spec = hub.create_module_spec(module_fn)
 

নির্দিষ্ট টেনসরফ্লো গ্রাফের মধ্যে কোনও মডিউল অবজেক্ট ইনস্ট্যান্ট করতে hub.create_module_spec() এর hub.create_module_spec() পাথের পরিবর্তে ব্যবহার করা যেতে পারে। এই জাতীয় ক্ষেত্রে, কোনও চেকপয়েন্ট নেই, এবং মডিউল উদাহরণটি পরিবর্তে চলক প্রারম্ভিক ব্যবহার করবে।

যে কোনও মডিউল উদাহরণটিকে ডিস্কে export(path, session) পদ্ধতির মাধ্যমে সিরিয়ালাইজ করা যায়। একটি মডিউল এক্সপোর্ট বর্তমান তার ভেরিয়েবল রাষ্ট্রের সঙ্গে এর সংজ্ঞা একসঙ্গে সিরিয়েলাইজ session গৃহীত পাথ মধ্যে। প্রথমবারের জন্য একটি মডিউল রফতানি করার সময়, পাশাপাশি সূক্ষ্ম সুরযুক্ত মডিউলটি রফতানি করার সময় এটি ব্যবহার করা যেতে পারে।

hub.LatestModuleExporter সাথে সামঞ্জস্যের জন্য, hub.LatestModuleExporter সর্বশেষ চেকপয়েন্ট থেকে মডিউলগুলি রফতানি করে ঠিক যেমন tf.estimator.LatestExporter সর্বশেষ মডেলটি সর্বশেষ চেকপয়েন্ট থেকে রফতানি করে।

মডিউল প্রকাশকদের যখন সম্ভব হয় তখন একটি সাধারণ স্বাক্ষর প্রয়োগ করা উচিত, যাতে গ্রাহকরা সহজেই মডিউলগুলি বিনিময় করতে পারেন এবং তাদের সমস্যার জন্য সেরাটি খুঁজে পেতে পারেন।

বাস্তব উদাহরণ

সাধারণ পাঠ্য এম্বেডিং ফর্ম্যাট থেকে কীভাবে মডিউল তৈরি করতে হয় তার বাস্তব-বিশ্বের উদাহরণের জন্য আমাদের পাঠ্য এম্বেডিং মডিউল রফতানিকারীর দিকে একবার নজর দিন।

ফাইন-টিউনিং

আশেপাশের মডেলগুলির সাথে একটি আমদানি করা মডিউলটির ভেরিয়েবলগুলি প্রশিক্ষণ দেওয়াকে সূক্ষ্ম সুরকরণ বলা হয়। ফাইন-টিউনিংয়ের ফলে আরও ভাল মানের ফলাফল হতে পারে তবে নতুন জটিলতা যুক্ত হয়। আমরা গ্রাহকদের কেবলমাত্র সহজতর মানের টুইটগুলি অন্বেষণ করার পরে সূক্ষ্ম-সুরক্ষার দিকে নজর দেওয়ার পরামর্শ দিই, এবং কেবলমাত্র মডিউল প্রকাশক এটির পরামর্শ দেন।

গ্রাহকগণের জন্য

সূক্ষ্ম-সুরকরণ সক্ষম করতে, তার ভেরিয়েবলগুলিকে প্রশিক্ষণযোগ্য করে hub.Module(..., trainable=True) জন্য মডিউলটি hub.Module(..., trainable=True) দিয়ে ইনস্ট্যান্ট করুন এবং REGULARIZATION_LOSSES - REGULARIZATION_LOSSES আমদানি করুন। মডিউলে যদি একাধিক গ্রাফ রূপ রয়েছে তবে প্রশিক্ষণের জন্য উপযুক্তটি বেছে নেওয়ার বিষয়টি নিশ্চিত করুন। সাধারণত, ট্যাগগুলির সাথে {"train"} with {"train"}

এমন একটি প্রশিক্ষণ ব্যবস্থা বেছে নিন যা প্রাক-প্রশিক্ষিত ওজনগুলি নষ্ট করে না, উদাহরণস্বরূপ, স্ক্র্যাচ থেকে প্রশিক্ষণের চেয়ে কম শিক্ষার হার।

প্রকাশকদের জন্য

গ্রাহকদের জন্য সূক্ষ্ম-সুরকরণকে আরও সহজ করার জন্য, দয়া করে নিম্নলিখিত বিষয়গুলি সম্পর্কে মনে রাখবেন:

  • ফাইন-টিউনিংয়ের নিয়মিতকরণ প্রয়োজন। আপনার মডিউলটি REGULARIZATION_LOSSES সংগ্রহের সাথে রফতানি করা হয়, যা tf.layers.dense(..., kernel_regularizer=...) ইত্যাদির আপনার tf.losses.get_regularization_losses() থেকে কী পেতে পারে তার মধ্যে রাখে। এল 1 / এল 2 নিয়মিতকরণ ক্ষতির সংজ্ঞা দেওয়ার এই উপায়ে পছন্দ করুন।

  • প্রকাশক মডেলটিতে, tf.train.FtrlOptimizer , tf.train.ProximalGradientDescentOptimizer , এবং অন্যান্য প্রক্সিমাল অপটিমাইজারের l1_ এবং l2_regularization_strength পরামিতিগুলির মাধ্যমে L1 / L2 নিয়ন্ত্রণ নিয়মিতকরণ সংজ্ঞায়িত করুন। এগুলি মডিউলটির পাশাপাশি রপ্তানি করা হয় না এবং বিশ্বব্যাপী নিয়মিতকরণের শক্তি নির্ধারণ ভোক্তার পক্ষে উপযুক্ত নাও হতে পারে। প্রশস্ত (যেমন স্পার্স লিনিয়ার) বা প্রশস্ত ও গভীর মডেলগুলিতে এল 1 নিয়মিতকরণ ব্যতীত পৃথক নিয়মিতকরণ ক্ষতির পরিবর্তে এটি ব্যবহার করা সম্ভব।

  • আপনি যদি ড্রপআউট, ব্যাচের সাধারণকরণ বা অনুরূপ প্রশিক্ষণ কৌশলগুলি ব্যবহার করেন তবে তাদের হাইপারপ্যারামিটারগুলি এমন মানগুলিতে সেট করুন যা অনেক প্রত্যাশিত ব্যবহারগুলিতে বোঝায়। ড্রপআউট হারকে অতিরিক্ত সমস্যার তুলনায় টার্গেট সমস্যার প্রবণতার সাথে সামঞ্জস্য করতে হতে পারে। ব্যাচের সাধারণকরণের ক্ষেত্রে, ছোট ডেটাসেট এবং / অথবা বড় ব্যাচগুলির সাথে সূক্ষ্ম-সুরকরণ সক্ষম করার জন্য গতিবেগ (ওরফে ক্ষয় সহগ) যথেষ্ট ছোট হওয়া উচিত। উন্নত গ্রাহকদের জন্য, এমন একটি স্বাক্ষর যুক্ত করার কথা বিবেচনা করুন যা সমালোচনামূলক হাইপারপ্যারামিটারগুলির নিয়ন্ত্রণ নিয়ন্ত্রণ করে।