يقوم المرجع باستخراج الحقول من رسالة مؤقتة للبروتوكول المتسلسل إلى موتر.
ملاحظة: تم تصميم واجهة برمجة التطبيقات هذه من أجل التعامد بدلاً من ملاءمة الإنسان. يمكن استخدامه لتحليل نماذج الإدخال يدويًا، ولكنه مخصص للاستخدام في التعليمات البرمجية التي تم إنشاؤها.
تقوم عملية `decode_proto` باستخراج الحقول من بروتوكول متسلسل يقوم بتخزين الرسالة مؤقتًا في موترات. يتم فك تشفير الحقول الموجودة في "أسماء_الحقول" وتحويلها إلى "أنواع_المخرجات" المقابلة إن أمكن.
يجب توفير اسم "نوع_الرسالة" لتوفير سياق لأسماء الحقول. يمكن البحث عن واصف الرسالة الفعلي إما في تجمع الواصفات المرتبطة أو في اسم الملف الذي يوفره المتصل باستخدام السمة "descriptor_source".
كل موتر إخراج هو موتر كثيف. وهذا يعني أنها مبطنة لاستيعاب أكبر عدد من العناصر المتكررة التي تظهر في الدفعة الصغيرة للإدخال. (الشكل مبطن أيضًا بواحد لمنع الأبعاد ذات الحجم الصفري). يمكن العثور على أعداد التكرار الفعلية لكل مثال في الدفعة الصغيرة في مخرجات "الأحجام". في كثير من الحالات، يتم تغذية مخرجات `decode_proto` على الفور إلى tf.squeeze إذا لم تكن القيم المفقودة مثيرة للقلق. عند استخدام tf.squeeze، قم دائمًا بتمرير بُعد الضغط بشكل صريح لتجنب المفاجآت.
بالنسبة للجزء الأكبر، يكون التعيين بين أنواع حقول Proto وأنواع TensorFlow واضحًا ومباشرًا. ومع ذلك، هناك بعض الحالات الخاصة:
- لا يمكن تحويل الحقل الأولي الذي يحتوي على رسالة فرعية أو مجموعة إلا إلى `DT_STRING` (الرسالة الفرعية المتسلسلة). وذلك لتقليل تعقيد واجهة برمجة التطبيقات (API). يمكن استخدام السلسلة الناتجة كمدخل لمثيل آخر من عملية decode_proto.
- يفتقر TensorFlow إلى دعم الأعداد الصحيحة غير الموقعة. تمثل العمليات أنواع uint64 على أنها `DT_INT64` بنفس نمط البتات الثنائية المكملة (الطريقة الواضحة). يمكن تمثيل قيم int32 غير الموقعة تمامًا عن طريق تحديد النوع `DT_INT64`، أو استخدام المكمل الثنائي إذا حدد المتصل `DT_INT32` في السمة `output_types`.
- لم يتم فك تشفير حقول "الخريطة" مباشرة. ويتم التعامل معها على أنها حقول "متكررة"، من نوع الإدخال المناسب. يحدد المترجم الأولي أنواع الإدخال لكل حقل خريطة. اسم النوع هو اسم الحقل، الذي تم تحويله إلى "CamelCase" مع إلحاق "الإدخال". تعتبر رسالة tf.train.Features.FeatureEntry
مثالاً على أحد أنواع "الإدخال" الضمنية هذه.
- يجب قراءة حقول `enum` كـ int32.
يتم دعم كل من التسلسلات الثنائية والنصية الأولية، ويمكن اختيارها باستخدام السمة "format".
تحدد السمة `descriptor_source` مصدر واصفات البروتوكول للرجوع إليها عند البحث عن `message_type`. هذا قد يكون:
- سلسلة فارغة أو "://local://"، وفي هذه الحالة يتم إنشاء واصفات البروتوكول لتعريفات بروتوكول C++ (وليس Python) المرتبطة بالثنائي.
- ملف، وفي هذه الحالة يتم إنشاء واصفات البروتوكول من الملف، والذي من المتوقع أن يحتوي على `FileDescriptorSet` المتسلسل كسلسلة. ملاحظة: يمكنك إنشاء ملف `descriptor_source` باستخدام خيارات `--descriptor_set_out` و`--include_imports` لمترجم البروتوكول `protoc`.
- "بايت: //
فئات متداخلة
فصل | DecodeProto.Options | سمات اختيارية لـ DecodeProto |
الأساليب العامة
ثابت فك التشفير | إنشاء (نطاق النطاق ، المعامل <String> بايت، String messageType، List<String> fieldNames، List<Class<?>> OutputTypes، Options... options) طريقة المصنع لإنشاء فئة تغلف عملية DecodeProto جديدة. |
ثابت DecodeProto.Options | واصف المصدر (سلسلة واصف المصدر) |
ثابت DecodeProto.Options | تنسيق الرسالة (تنسيق رسالة السلسلة) |
ثابت DecodeProto.Options | تعقيم (تعقيم منطقي) |
الإخراج <عدد صحيح> | الأحجام () موتر int32 بالشكل `[batch_shape, len(field_names)]`. |
قائمة< الإخراج <?>> | قيم () قائمة الموترات التي تحتوي على قيم للحقل المقابل. |
الطرق الموروثة
الأساليب العامة
إنشاء DecodeProto ثابت عام ( نطاق النطاق، المعامل <String> بايت، String messageType، List<String> fieldNames، List<Class<?>> OutputTypes، Options... options)
طريقة المصنع لإنشاء فئة تغلف عملية DecodeProto جديدة.
حدود
نِطَاق | النطاق الحالي |
---|---|
بايت | موتر من النماذج الأولية المتسلسلة ذات الشكل "batch_shape". |
نوع الرسالة | اسم نوع الرسالة الأولية المراد فك تشفيرها. |
أسماء الحقول | قائمة السلاسل التي تحتوي على أسماء الحقول الأولية. يمكن فك تشفير حقل الامتداد باستخدام اسمه الكامل، على سبيل المثال، EXT_PACKAGE.EXT_FIELD_NAME. |
أنواع الإخراج | قائمة بأنواع TF التي سيتم استخدامها للحقل المعني في field_names. |
خيارات | يحمل قيم السمات الاختيارية |
عائدات
- مثيل جديد من DecodeProto
DecodeProto.Options decodeProto العام الثابت (مصدر واصف السلسلة)
حدود
descriptorSource | إما القيمة الخاصة "local://" أو مسار إلى ملف يحتوي على "FileDescriptorSet" المتسلسل. |
---|
DecodeProto.Options العام الثابت messageFormat (String messageFormat)
حدود
messageFormat | إما "ثنائي" أو text . |
---|
أحجام الإخراج العام < عدد صحيح> ()
موتر int32 بالشكل `[batch_shape, len(field_names)]`. كل إدخال هو عدد القيم الموجودة للحقل المقابل. قد تحتوي الحقول الاختيارية على قيم 0 أو 1.
القائمة العامة < الإخراج <?>> القيم ()
قائمة الموترات التي تحتوي على قيم للحقل المقابل. تحتوي `values[i]` على نوع بيانات `output_types[i]` وشكل `[batch_shape, max(sizes[...,i])]`.