ה-op מחלץ שדות מפרוטוקול מסודר מאחסן הודעה לטנזורים.
הערה: API זה מיועד לאורתוגונליות ולא לידידותיות אנושית. ניתן להשתמש בו כדי לנתח פרוטו קלט ביד, אך הוא מיועד לשימוש בקוד שנוצר.
האופציה `decode_proto` מחלצת שדות מפרוטוקול מסודר מאחסנת הודעה לטנזורים. השדות ב-'name_fields' מפוענחים ומומרים ל-'output_types' המתאימים במידת האפשר.
יש לספק שם 'סוג_הודעה' כדי לתת הקשר לשמות השדות. ניתן לחפש את מתאר ההודעה בפועל במאגר התיאורים המקושר או בשם קובץ שסופק על ידי המתקשר באמצעות התכונה `descriptor_source`.
כל טנסור פלט הוא טנסור צפוף. המשמעות היא שהוא מרופד כדי להחזיק את המספר הגדול ביותר של רכיבים חוזרים ונשנים במיני-אצט הקלט. (הצורה גם מרופדת באחד כדי למנוע ממדים בגודל אפס). ניתן למצוא את ספירת החזרות בפועל עבור כל דוגמה ב-minibatch בפלט 'מידות'. במקרים רבים הפלט של `decode_proto` מוזן מיד לתוך tf.squeeze אם ערכים חסרים אינם מהווים חשש. בעת שימוש ב-tf.squeeze, תמיד העבר את ממד הסחיטה במפורש כדי למנוע הפתעות.
לרוב, המיפוי בין סוגי שדות Proto ו-TensorFlow dtypes הוא פשוט. עם זאת, ישנם כמה מקרים מיוחדים:
- ניתן להמיר שדה פרוטו שמכיל תת-הודעה או קבוצה רק ל-'DT_STRING' (תת-ההודעה בסידרה). זאת כדי להפחית את המורכבות של ה-API. המחרוזת שהתקבלה יכולה לשמש כקלט למופע אחר של ה-decode_proto op.
- TensorFlow חסרה תמיכה במספרים שלמים לא חתומים. האופציות מייצגות סוגי uint64 בתור `DT_INT64` עם אותה תבנית סיביות משלימה של שניים (הדרך הברורה). ערכי int32 לא חתומים יכולים להיות מיוצגים במדויק על ידי ציון סוג `DT_INT64`, או שימוש בהשלמה של שניים אם המתקשר מציין `DT_INT32` בתכונה `output_types`.
- שדות 'מפה' אינם מפוענחים ישירות. הם מטופלים כשדות 'חוזרים', מסוג הערך המתאים. הפרוטו-מהדר מגדיר סוגי ערכים עבור כל שדה מפה. שם הסוג הוא שם השדה, שהומר ל-"CamelCase" עם "כניסה" מצורף. הודעת tf.train.Features.FeatureEntry
היא דוגמה לאחד מסוגי ה'כניסה' המרומזים הללו.
- יש לקרוא את שדות 'enum' בתור int32.
הן תומכות בהמשכה בינארית והן בהמשכיות פרוטו טקסט, וניתן לבחור אותן באמצעות התכונה 'פורמט'.
התכונה `descriptor_source` בוחרת את המקור של מתארי הפרוטוקול שיש להתייעץ בהם בעת חיפוש `message_type`. זה יכול להיות:
- מחרוזת ריקה או "local://", ובמקרה זה נוצרים מתארי פרוטוקול עבור הגדרות פרוטו C++ (לא Python) המקושרות לבינארי.
- קובץ, ובמקרה זה נוצרים מתארי פרוטוקול מהקובץ, אשר צפוי להכיל `FileDescriptorSet` בסידרה כמחרוזת. הערה: אתה יכול לבנות קובץ `descriptor_source` באמצעות האפשרויות `--descriptor_set_out` ו`--include_imports` למהדר הפרוטוקול `protoc`.
- A "bytes://
כיתות מקוננות
מעמד | DecodeProto.Options | תכונות אופציונליות עבור DecodeProto |
שיטות ציבוריות
סטטי DecodeProto | create ( scope scope, Operand <String> bytes, String messageType, List<String> fieldNames, List<Class<?>> outputTypes, Options... options) שיטת מפעל ליצירת מחלקה העוטפת פעולת DecodeProto חדשה. |
סטטי DecodeProto.Options | descriptorSource (מחרוזת descriptorSource) |
סטטי DecodeProto.Options | messageFormat (String messageFormat) |
סטטי DecodeProto.Options | חיטוי (חיטוי בוליאני) |
פלט <מספר שלם> | גדלים () טנסור של int32 עם הצורה `[batch_shape, len(field_names)]`. |
רשימה< פלט <?>> | ערכים () רשימת טנסורים המכילה ערכים עבור השדה המתאים. |
שיטות בירושה
שיטות ציבוריות
public static DecodeProto create ( scope scope, Operand <String> bytes, String messageType, List<String> fieldNames, List<Class<?>> outputTypes, Options... options)
שיטת מפעל ליצירת מחלקה העוטפת פעולת DecodeProto חדשה.
פרמטרים
תְחוּם | ההיקף הנוכחי |
---|---|
בתים | טנסור של פרוטו סידורי עם צורה 'אצווה_צורה'. |
סוג הודעה | שם סוג הודעת הפרוטו לפענוח. |
שמות שדה | רשימת מחרוזות המכילות שמות שדות פרוטו. ניתן לפענח שדה הרחבה באמצעות השם המלא שלו, למשל EXT_PACKAGE.EXT_FIELD_NAME. |
outputTypes | רשימה של סוגי TF לשימוש עבור השדה המתאים בשדה_שמות. |
אפשרויות | נושא ערכי תכונות אופציונליות |
החזרות
- מופע חדש של DecodeProto
public static DecodeProto.Options descriptorSource (String descriptorSource)
פרמטרים
descriptorSource | או הערך המיוחד `local://` או נתיב לקובץ המכיל `FileDescriptorSet` מסודר. |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
פרמטרים
messageFormat | או 'בינארי' או text . |
---|
פלט ציבורי בגדלים של <Integer> ()
טנסור של int32 עם הצורה `[batch_shape, len(field_names)]`. כל ערך הוא מספר הערכים שנמצאו עבור השדה המתאים. שדות אופציונליים עשויים לכלול 0 או 1 ערכים.
ערכי רשימה ציבורית< פלט <?>> ()
רשימת טנסורים המכילה ערכים עבור השדה המתאים. ל-`values[i]` יש את סוג הנתונים `output_types[i]` ואת הצורה `[batch_shape, max(sizes[...,i])]`.