عملیات، فیلدها را از یک پروتکل سریالی، پیام را به تانسورها استخراج می کند.
توجه: این API برای متعامد بودن به جای انسان دوستی طراحی شده است. می توان از آن برای تجزیه پروتوهای ورودی با دست استفاده کرد، اما برای استفاده در کدهای تولید شده در نظر گرفته شده است.
عملیات "decode_proto" فیلدها را از یک پروتکل سریالی بافر پیام را به تانسورها استخراج می کند. فیلدهای "نام_فیلد" رمزگشایی شده و در صورت امکان به "نوع_خروجی" مربوطه تبدیل می شوند.
یک نام «نوع_پیام» باید ارائه شود تا زمینه نام فیلدها مشخص شود. توصیفگر پیام واقعی را می توان در مجموعه توصیفگر پیوند داده شده یا نام فایل ارائه شده توسط تماس گیرنده با استفاده از ویژگی 'descriptor_source' جستجو کرد.
هر تانسور خروجی یک تانسور متراکم است. این بدان معنی است که برای نگه داشتن بیشترین تعداد عناصر تکراری که در مینی بچ ورودی دیده می شود، بالشتک شده است. (شکل نیز برای جلوگیری از صفر شدن ابعاد آن با یک لایه بندی می شود). تعداد تکرار واقعی برای هر نمونه در minibatch را می توان در خروجی «اندازه ها» یافت. در بسیاری از موارد خروجی «decode_proto» بلافاصله به tf.squeeze وارد میشود، اگر مقادیر از دست رفته نگران کننده نباشند. هنگام استفاده از tf.squeeze، برای جلوگیری از غافلگیری، همیشه بعد فشار را به صراحت عبور دهید.
در بیشتر موارد، نگاشت بین انواع فیلد Proto و dtypes TensorFlow ساده است. با این حال، چند مورد خاص وجود دارد:
- یک فیلد پروتو که حاوی یک پیام فرعی یا گروه است، فقط می تواند به «DT_STRING» (پیام فرعی سریالی) تبدیل شود. این برای کاهش پیچیدگی API است. رشته به دست آمده را می توان به عنوان ورودی برای نمونه دیگری از decode_proto op استفاده کرد.
- TensorFlow از اعداد صحیح بدون علامت پشتیبانی نمی کند. عملیات، انواع uint64 را به عنوان یک «DT_INT64» با همان الگوی بیت دو متمم (روش واضح) نشان می دهد. مقادیر بدون علامت int32 را میتوان دقیقاً با تعیین نوع «DT_INT64» یا با استفاده از مکمل twos نشان داد اگر تماسگیرنده «DT_INT32» را در ویژگی «output_types» مشخص کند.
- فیلدهای «نقشه» مستقیماً رمزگشایی نمی شوند. آنها به عنوان فیلدهای "تکرار شده" از نوع ورودی مناسب در نظر گرفته می شوند. پروتوکامپایلر انواع ورودی را برای هر فیلد نقشه تعریف می کند. نوع نام، نام فیلد است که به "CamelCase" با "Entry" ضمیمه شده است. پیام tf.train.Features.FeatureEntry
نمونه ای از این نوع «ورود» ضمنی است.
- فیلدهای "enum" باید به صورت int32 خوانده شوند.
هر دو سریالسازی باینری و متنی اولیه پشتیبانی میشوند و میتوانند با استفاده از ویژگی «format» انتخاب شوند.
ویژگی «descriptor_source» منبع توصیفگرهای پروتکل را انتخاب میکند تا هنگام جستجوی «نوع_پیام» با آنها مشورت شود. این ممکن است:
- یک رشته خالی یا "local://"، در این صورت توصیف کننده های پروتکل برای تعاریف پروتو C++ (نه Python) که به باینری پیوند داده شده اند ایجاد می شود.
- یک فایل، که در این صورت توصیفکنندههای پروتکل از فایل ایجاد میشوند که انتظار میرود حاوی یک «FileDescriptorSet» باشد که بهصورت رشتهای بهصورت سریالسازی شده است. توجه: میتوانید یک فایل «descriptor_source» با استفاده از گزینههای «--descriptor_set_out» و «--include_imports» در کامپایلر پروتکل «protoc» بسازید.
- یک "بایت: //
کلاس های تو در تو
کلاس | DecodeProto.Options | ویژگی های اختیاری برای DecodeProto |
روش های عمومی
استاتیک DecodeProto | ایجاد (حوزه دامنه ، عملوند <رشته> بایت، رشته پیام نوع، لیست<رشته> نامهای فیلد، فهرست<کلاس<?>> انواع خروجی، گزینهها... گزینهها) روش کارخانه برای ایجاد کلاسی که عملیات DecodeProto جدید را بسته بندی می کند. |
استاتیک DecodeProto.Options | descriptorSource (String descriptorSource) |
استاتیک DecodeProto.Options | messageFormat (رشته پیام فرمت) |
استاتیک DecodeProto.Options | ضدعفونی کردن (عفونی کردن بولی) |
خروجی <عدد صحیح> | اندازه ها () تانسور int32 با شکل «[batch_shape, len(field_names)]». |
فهرست< خروجی <?>> | ارزش های () فهرست تانسورهای حاوی مقادیر برای فیلد مربوطه. |
روش های ارثی
روش های عمومی
ایجاد DecodeProto ایستا عمومی (حوزه دامنه ، بایت های عملوند <رشته>، نوع پیام رشته، فهرست <رشته> نام های فیلد، فهرست <کلاس<?>> انواع خروجی، گزینه ها... گزینه ها)
روش کارخانه برای ایجاد کلاسی که عملیات DecodeProto جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|---|
بایت ها | تانسور پروتوهای سریالی با شکل «بچ_شکل». |
نوع پیام | نام نوع پیام اولیه برای رمزگشایی. |
نام فیلدها | فهرست رشته های حاوی نام فیلدهای پروتو. یک فیلد افزونه را می توان با استفاده از نام کامل آن رمزگشایی کرد، به عنوان مثال EXT_PACKAGE.EXT_FIELD_NAME. |
انواع خروجی | لیستی از انواع TF برای استفاده برای فیلد مربوطه در field_names. |
گزینه ها | مقادیر ویژگی های اختیاری را حمل می کند |
برمی گرداند
- یک نمونه جدید از DecodeProto
عمومی استاتیک DecodeProto.Options descriptorSource (String descriptorSource)
مولفه های
منبع توصیف | مقدار ویژه «local://» یا مسیری به فایلی که حاوی «FileDescriptorSet» سریالی است. |
---|
عمومی استاتیک DecodeProto.Options messageFormat (String messageFormat)
مولفه های
قالب پیام | یا «دودویی» یا text . |
---|
عمومی استاتیک DecodeProto. Options sanitize (Boolean sanitize)
مولفه های
ضدعفونی کردن | اینکه آیا نتیجه را ضد عفونی کنیم یا خیر. |
---|
اندازه های خروجی عمومی <Integer> ()
تانسور int32 با شکل «[batch_shape, len(field_names)]». هر ورودی تعداد مقادیر یافت شده برای فیلد مربوطه است. فیلدهای اختیاری ممکن است 0 یا 1 مقدار داشته باشند.
لیست عمومی< خروجی <?>> مقادیر ()
فهرست تانسورهای حاوی مقادیر برای فیلد مربوطه. "values[i]" دارای نوع داده "output_types[i]" و شکل "[batch_shape, max(sizes[...,i])]" است.