op แยกฟิลด์จากข้อความบัฟเฟอร์โปรโตคอลต่อเนื่องเป็นเทนเซอร์
หมายเหตุ: API นี้ได้รับการออกแบบมาเพื่อให้มีลักษณะมุมฉากมากกว่าเป็นมิตรกับมนุษย์ สามารถใช้เพื่อแยกวิเคราะห์อินพุต protos ด้วยมือ แต่มีไว้สำหรับใช้ในโค้ดที่สร้างขึ้น
ตัวเลือก `decode_proto` จะแยกฟิลด์จากข้อความบัฟเฟอร์โปรโตคอลแบบอนุกรมลงในเทนเซอร์ ฟิลด์ใน "ชื่อฟิลด์" จะถูกถอดรหัสและแปลงเป็น "ประเภทเอาต์พุต" ที่เกี่ยวข้อง หากเป็นไปได้
ต้องระบุชื่อ `message_type' เพื่อให้บริบทสำหรับชื่อฟิลด์ ตัวอธิบายข้อความจริงสามารถค้นหาได้ในพูล descriptor ที่เชื่อมโยงหรือชื่อไฟล์ที่ผู้เรียกให้มาโดยใช้แอตทริบิวต์ `descriptor_source`
เทนเซอร์เอาท์พุตแต่ละตัวเป็นเทนเซอร์แบบหนาแน่น ซึ่งหมายความว่ามีการบุนวมเพื่อให้มีองค์ประกอบที่ซ้ำกันจำนวนมากที่สุดที่เห็นในมินิแบตช์อินพุต (รูปร่างยังเสริมด้วยหนึ่งเพื่อป้องกันขนาดเป็นศูนย์) จำนวนการทำซ้ำจริงสำหรับแต่ละตัวอย่างในมินิแบตช์สามารถพบได้ในเอาต์พุต "ขนาด" ในหลายกรณี เอาต์พุตของ "decode_proto" จะถูกป้อนเข้าสู่ tf.squeeze ทันที หากไม่มีปัญหาเรื่องค่าที่หายไป เมื่อใช้ tf.squeeze ให้ส่งผ่านมิติการบีบอย่างชัดเจนเสมอเพื่อหลีกเลี่ยงความประหลาดใจ
โดยส่วนใหญ่ การแมประหว่างประเภทฟิลด์ Proto และ TensorFlow dtypes นั้นตรงไปตรงมา อย่างไรก็ตาม มีบางกรณีพิเศษ:
- ฟิลด์โปรโตที่มีข้อความย่อยหรือกลุ่มสามารถแปลงเป็น `DT_STRING` เท่านั้น (ข้อความย่อยที่ต่อเนื่องกัน) ซึ่งเป็นการลดความซับซ้อนของ API สตริงผลลัพธ์สามารถใช้เป็นอินพุตไปยังอินสแตนซ์อื่นของ decode_proto op
- TensorFlow ขาดการสนับสนุนสำหรับจำนวนเต็มที่ไม่ได้ลงนาม ops เป็นตัวแทนของประเภท uint64 เป็น `DT_INT64` ที่มีรูปแบบบิตเสริมสองส่วนเหมือนกัน (วิธีที่ชัดเจน) ค่า int32 ที่ไม่ได้ลงนามสามารถแสดงได้โดยการระบุประเภท `DT_INT64` หรือใช้ twos-complement หากผู้เรียกระบุ `DT_INT32' ในแอตทริบิวต์ `output_types`
- ฟิลด์ `แผนที่' ไม่ได้ถูกถอดรหัสโดยตรง จะถือว่าเป็นช่อง "ซ้ำ" ของประเภทรายการที่เหมาะสม โปรโตคอมไพเลอร์กำหนดประเภทรายการสำหรับแต่ละฟิลด์แผนที่ ชื่อประเภทคือชื่อฟิลด์ที่แปลงเป็น "CamelCase" โดยต่อท้าย "Entry" ข้อความ tf.train.Features.FeatureEntry
คือตัวอย่างหนึ่งของประเภท "รายการ" โดยนัยเหล่านี้
- ฟิลด์ `enum' ควรอ่านเป็น int32
รองรับการซีเรียลไลซ์เซชันโปรโตแบบไบนารีและข้อความ และสามารถเลือกได้โดยใช้แอตทริบิวต์ "รูปแบบ"
แอตทริบิวต์ "descriptor_source" จะเลือกแหล่งที่มาของตัวอธิบายโปรโตคอลที่ต้องการปรึกษาเมื่อค้นหา "message_type" นี่อาจเป็น:
- สตริงว่างหรือ "local://" ซึ่งในกรณีนี้ตัวบอกโปรโตคอลจะถูกสร้างขึ้นสำหรับคำจำกัดความโปรโต C++ (ไม่ใช่ Python) ที่เชื่อมโยงกับไบนารี
- ไฟล์ ซึ่งในกรณีนี้ protocol descriptor ถูกสร้างขึ้นจากไฟล์ ซึ่งคาดว่าจะมี `FileDescriptorSet' ที่จัดลำดับเป็นสตริง หมายเหตุ: คุณสามารถสร้างไฟล์ "descriptor_source" โดยใช้ตัวเลือก "--descriptor_set_out" และ "--include_imports" ให้กับคอมไพเลอร์โปรโตคอล "protoc"
- เป็น "ไบต์: //
คลาสที่ซ้อนกัน
ระดับ | DecodeProto.Options | แอ็ตทริบิวต์ทางเลือกสำหรับ DecodeProto |
วิธีการสาธารณะ
DecodeProto แบบคงที่ | สร้าง ( ขอบเขต ขอบเขต, ตัวถูกดำเนินการ <String> ไบต์, String messageType , List<String> fieldNames, List<Class<?>> outputTypes, Options... ตัวเลือก) วิธีการจากโรงงานเพื่อสร้างคลาสที่ปิดการดำเนินการ DecodeProto ใหม่ |
คงที่ DecodeProto.Options | descriptorSource (สตริง descriptorSource) |
คงที่ DecodeProto.Options | messageFormat (รูปแบบข้อความสตริง) |
คงที่ DecodeProto.Options | ฆ่าเชื้อ (ฆ่าเชื้อบูลีน) |
เอาต์พุต <จำนวนเต็ม> | ขนาด () เทนเซอร์ของ int32 ที่มีรูปร่าง `[batch_shape, len(field_names)]` |
รายการ< เอาท์พุต <?>> | ค่า () รายการเทนเซอร์ที่มีค่าสำหรับฟิลด์ที่เกี่ยวข้อง |
วิธีการสืบทอด
วิธีการสาธารณะ
สร้าง DecodeProto แบบคงที่สาธารณะ ( ขอบเขต ขอบเขต, ตัวถูกดำเนินการ <String> ไบต์, ประเภทข้อความสตริง, รายการ<String> fieldNames, รายการ<Class<?>> outputTypes, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ปิดการดำเนินการ DecodeProto ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
ไบต์ | เทนเซอร์ของโปรโตแบบต่อเนื่องที่มีรูปร่าง "batch_shape" |
ประเภทข้อความ | ชื่อของประเภทข้อความโปรโตที่จะถอดรหัส |
fieldNames | รายการสตริงที่มีชื่อฟิลด์โปรโต ฟิลด์ส่วนขยายสามารถถอดรหัสได้โดยใช้ชื่อเต็ม เช่น EXT_PACKAGE.EXT_FIELD_NAME |
outputTypes | รายการประเภท TF ที่จะใช้สำหรับฟิลด์ที่เกี่ยวข้องใน field_names |
ตัวเลือก | ดำเนินการค่าแอตทริบิวต์ทางเลือก |
คืนสินค้า
- ตัวอย่างใหม่ของ DecodeProto
DecodeProto.Options descriptorSource แบบคงที่สาธารณะ (String descriptorSource)
พารามิเตอร์
descriptorSource | ค่าพิเศษ "local://" หรือเส้นทางไปยังไฟล์ที่มี "FileDescriptorSet" ที่จัดลำดับ |
---|
สาธารณะแบบคงที่ DecodeProto.Options messageFormat (สตริง messageFormat)
พารามิเตอร์
รูปแบบข้อความ | ไม่ว่าจะเป็น "ไบนารี" หรือ text |
---|
DecodeProto.Options แบบคงที่สาธารณะ ( ฆ่าเชื้อ บูลีน)
พารามิเตอร์
ฆ่าเชื้อ | ไม่ว่าจะฆ่าเชื้อผลหรือไม่ |
---|
ขนาด เอาต์พุต สาธารณะ <จำนวนเต็ม> ()
เทนเซอร์ของ int32 ที่มีรูปร่าง `[batch_shape, len(field_names)]` แต่ละรายการคือจำนวนค่าที่พบในฟิลด์ที่เกี่ยวข้อง ฟิลด์ตัวเลือกอาจมีค่า 0 หรือ 1
รายการสาธารณะ < ผลลัพธ์ <?>> ค่า ()
รายการเทนเซอร์ที่มีค่าสำหรับฟิลด์ที่เกี่ยวข้อง `values[i]` มีประเภทข้อมูล `output_types[i]` และรูปร่าง `[batch_shape, max(sizes[...,i])]`