این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

فرمت TF1 توپی

فرمت TF1 توپی برای واردات به برنامه TensorFlow 1: در راه اندازی آن در سال 2018، TensorFlow توپی یک نوع دارایی ارائه شده است.

این صفحه را توضیح می دهد که چگونه به استفاده از فرمت TF1 توپی در TF1 (یا حالت سازگاری TF1 از TF2) با hub.Module کلاس و API های همراه است. (استفاده معمولی است برای ساخت یک tf.Graph ، احتمالا در داخل یک TF1 Estimator ، با ترکیب یک یا چند مدل در فرمت TF1 توپی با tf.compat.layers یا tf.layers ).

کاربران TensorFlow 2 (خارج TF1 حالت سازگاری) باید استفاده از API های جدید با hub.load() و یا hub.KerasLayer . بارهای API جدید از نوع جدید دارایی TF2 SavedModel، اما همچنین دارای محدود پشتیبانی برای بارگیری فرمت TF1 توپی به TF2 .

با استفاده از یک مدل در فرمت TF1 توپی

در نمونه یک مدل در فرمت TF1 توپی

مدل در فرمت TF1 توپی را به یک برنامه TensorFlow با ایجاد یک وارد hub.Module شی از یک رشته با نشانی اینترنتی خود و یا مسیر فایل سیستم، مانند:

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

این می افزاید: متغیرهای ماژول به نمودار TensorFlow جاری است. در حال اجرا Initializer نام خود را ارزش های از پیش آموزش دیده خود را از دیسک خوانده شود. به همین ترتیب، جداول و دولت های دیگر به نمودار اضافه شده است.

ذخیره ساز ماژول

هنگام ایجاد یک ماژول از یک URL، محتوای ماژول دانلود و ذخیره سازی در سیستم محلی دایرکتوری موقت. محل که در آن ماژول ذخیره سازی می توان با استفاده باطل TFHUB_CACHE_DIR متغیر محیط زیست است. برای جزئیات، ذخیره ساز .

استفاده از یک ماژول

هنگامی که نمونه، یک ماژول m می تواند صفر یا چند بار مانند یک تابع پایتون از تانسور ورودی به تانسور خروجی به نام:

 y = m(x)
 

هر یک از این پاسخ می افزاید عملیات به نمودار TensorFlow فعلی برای محاسبه y از x . اگر این شامل متغیرهای با وزن آموزش دیده، این ها بین برنامه های به اشتراک گذاشته.

ماژول می توانید چند امضا به نام به منظور اجازه تعریف در بیش از یک راه (شبیه به اشیاء چگونه پایتون روش) استفاده شود. مستندات ماژول باید به امضاهای موجود توصیف می کنند. تماس بالا امضا به نام اعمال "default" . هر امضا می توان با عبور نام خود را به اختیاری انتخاب signature= استدلال است.

اگر یک امضا است ورودی های متعدد، آنها باید به عنوان یک بینی با استفاده از کلیدهای تعریف شده توسط امضا گذشت. به همین ترتیب، اگر یک امضا است خروجی های متعدد، این را می توان به عنوان یک بینی با عبور بازیابی as_dict=True ، تحت کلید تعریف شده توسط امضا (کلید "default" است برای خروجی تنها اگر بازگشت as_dict=False ). بنابراین ترین شکل کلی استفاده از یک نظر می رسد ماژول مانند:

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

تماس گیرنده باید تمام ورودی تعریف شده توسط یک امضای عرضه، اما بدون نیاز به استفاده از تمام خروجی یک ماژول وجود دارد. TensorFlow فقط آن قسمت از ماژول که در نهایت به عنوان وابستگی از یک هدف در اجرا خواهد شد tf.Session.run() . در واقع، ناشران ماژول ممکن را ارائه خروجی های مختلف برای استفاده از پیشرفته (مانند فعال از لایه های میانی) همراه با خروجی اصلی. مصرف کنندگان باید ماژول خروجی اضافی آرامی رسیدگی.

تلاش از ماژول های جایگزین

هر گاه ماژول های مختلف برای این کار وجود دارد، TensorFlow توپی را تشویق می کند آنها را مجهز با signartures سازگار (رابط) به صورتی که تلاش آنهایی که متفاوت است به آسانی به عنوان مختلف دسته ماژول به عنوان یک hyperparameter رشته ارزش دارد.

برای این منظور، ما حفظ مجموعه ای از توصیه امضا مشترک برای انجام وظایف محبوب.

ایجاد یک ماژول جدید

توجه داشته باشید سازگاری

فرمت TF1 توپی به سمت TensorFlow 1. بشود این است که تنها بخشی از آن توسط TF توپی در TensorFlow 2. پشتیبانی لطفا در نظر چاپ و نشر در جدید TF2 SavedModel فرمت به جای.

فرمت TF1 توپی شبیه به فرمت SavedModel از TensorFlow 1 در سطح نحوی (نام همان فایل و پیام های پروتکل) اما از لحاظ معنایی مختلف برای استفاده مجدد ماژول، ترکیب و دوباره آموزش (به عنوان مثال، ذخیره سازی مختلف Initializer نام منابع، برچسب زدن مختلف اجازه می دهد کنوانسیون برای metagraphs). ساده ترین راه برای آنها را از هم بر روی دیسک وجود یا عدم وجود از است tfhub_module.pb فایل.

رویکرد کلی

برای تعریف یک ماژول جدید، یک ناشر خواستار hub.create_module_spec() با یک تابع module_fn . این تابع به ساختن یک نمودار نشان دهنده ساختار داخلی این ماژول، با استفاده از tf.placeholder() برای ورودی به تماس گیرنده عرضه می شود. سپس آن را امضا با تماس با تعریف 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() می توان استفاده کرد، به جای یک مسیر، به یک نمونه از یک شی ماژول در یک نمودار TensorFlow خاص است. در این صورت، هیچ ایست بازرسی وجود دارد، و نمونه ماژول خواهد Initializer نام متغیر استفاده کنید.

هر نمونه ماژول می توان به دیسک از طریق آن مرتب export(path, session) روش. صادرات یک ماژول serializes با هم تعریف آن با وضعیت فعلی متغیرهای آن در session به مسیر منتقل می شود. این را می توان زمانی که صادرات یک ماژول برای اولین بار به عنوان زمانی که صادرات یک ماژول خوب تنظیم استفاده می شود، و همچنین.

برای سازگاری با TensorFlow برآوردگرهای، hub.LatestModuleExporter صادرات ماژول از آخرین پاسگاه ایست و بازرسی، درست مثل tf.estimator.LatestExporter صادرات کل مدل از آخرین پاسگاه.

ناشران ماژول باید یک پیاده سازی امضای مشترک در صورت امکان، به طوری که مصرف کنندگان به راحتی می توانید ماژول های تبادل و پیدا کردن یکی از بهترین برای مشکل خود را.

مثال واقعی

نگاهی به ما متن تعبیه صادر ماژول برای مثال در دنیای واقعی از نحوه ایجاد یک ماژول از یک فرمت تعبیه متن مشترک.

تنظیم دقیق

آموزش متغیرها از هم ماژول وارد با کسانی که از مدل اطراف آن را به نام ریز تنظیم. ریز تنظیم می تواند در کیفیت بهتر منجر، اما می افزاید عوارض جدید است. توصیه ما مصرف کنندگان به ریز تنظیم نگاه تنها پس از کاوش ترفند کیفیت ساده تر، و تنها اگر ناشر ماژول آن را توصیه.

برای مصرف کنندگان

برای فعال کردن ریز تنظیم، نمونه ماژول با hub.Module(..., trainable=True) به متغیر های آن تربیت شدنی و واردات TensorFlow است REGULARIZATION_LOSSES . اگر ماژول دارای نمودار چند انواع، مطمئن شوید که به انتخاب یک مناسب برای آموزش. معمولا، که با برچسب ها و {"train"} .

یک نظام آموزشی که وزن از پیش آموزش دیده خراب کردن نیست، برای مثال، یک نرخ یادگیری کمتر از آموزش از ابتدا را انتخاب نمایید.

برای ناشران

برای اینکه ریز تنظیم آسان تر برای مصرف کنندگان، دقت کنید که از موارد زیر باشد:

  • تنظیم نیاز تنظیم. ماژول خود را با صادر REGULARIZATION_LOSSES مجموعه است که چه انتخاب خود را از قرار tf.layers.dense(..., kernel_regularizer=...) و غیره به آنچه مصرف کننده می شود از tf.losses.get_regularization_losses() . ترجیح می دهم این راه تعریف زیان تنظیم L1 / L2.

  • در مدل ناشر، جلوگیری از تعریف L1 / L2 تنظیم از طریق l1_ و l2_regularization_strength پارامترهای tf.train.FtrlOptimizer ، tf.train.ProximalGradientDescentOptimizer ، و دیگر بهینه پروگزیمال. این در کنار ماژول صادر نشده است، و نقاط قوت تنظیم تنظیم سطح جهان ممکن است برای مصرف کننده مناسب است. بجز تنظیم L1 در (که یعنی پراکنده خطی) و یا گسترده و مدل های عمیق، باید آن را ممکن است به استفاده زیان تنظیم منحصر به فرد به جای.

  • اگر شما استفاده از ترک تحصیل، عادی دسته ای، و یا آموزش روش های مشابه، به ارزش های مجموعه hyperparameters خود را حس در سراسر بسیاری از کاربردهای انتظار می رود. نرخ ترک تحصیل ممکن است مجبور به به Over-fitting خواهد به میل مشکل مورد نظر تنظیم شود. در عادی دسته ای، حرکت (با نام مستعار پوسیدگی ضریب) باید به اندازه کافی کوچک را قادر می سازد ریز تنظیم با مجموعه داده های کوچک و / یا دسته های بزرگ باشد. برای مصرف کنندگان پیشرفته، نظر اضافه کردن یک امضای که در معرض بیش از hyperparameters critcial کنترل کنید.