DecodeProto

DecodeProto คลาสสุดท้ายสาธารณะ

สหกรณ์แยกฟิลด์จากข้อความบัฟเฟอร์โปรโตคอลแบบซีเรียลไลซ์เป็นเทนเซอร์

หมายเหตุ: API นี้ได้รับการออกแบบมาเพื่อความเป็นมุมฉากมากกว่าความเป็นมิตรต่อมนุษย์ สามารถใช้เพื่อแยกวิเคราะห์อินพุตโปรโตสด้วยมือ แต่มีไว้สำหรับใช้ในโค้ดที่สร้างขึ้น

`decode_proto` op จะแยกฟิลด์จากข้อความบัฟเฟอร์โปรโตคอลแบบอนุกรมลงในเทนเซอร์ ช่องใน `field_names` จะถูกถอดรหัสและแปลงเป็น `output_types` ที่สอดคล้องกันหากเป็นไปได้

ต้องระบุชื่อ `message_type` เพื่อให้บริบทสำหรับชื่อฟิลด์ คุณสามารถค้นหาตัวอธิบายข้อความจริงได้ในพูลตัวอธิบายที่เชื่อมโยงหรือชื่อไฟล์ที่ผู้โทรให้ไว้โดยใช้แอตทริบิวต์ `descriptor_source`

เทนเซอร์เอาท์พุตแต่ละตัวจะมีเทนเซอร์หนาแน่น ซึ่งหมายความว่ามีการบุนวมเพื่อเก็บองค์ประกอบซ้ำจำนวนมากที่สุดที่เห็นในมินิแบทช์อินพุต (รูปทรงยังบุนวมไว้หนึ่งอันเพื่อป้องกันขนาดเป็นศูนย์) จำนวนการทำซ้ำจริงสำหรับแต่ละตัวอย่างในมินิแบทช์สามารถพบได้ในเอาต์พุต "ขนาด" ในหลายกรณี เอาต์พุตของ `decode_proto` จะถูกป้อนเข้าสู่ tf.squeeze ทันที หากค่าที่หายไปไม่ใช่ปัญหา เมื่อใช้ tf.squeeze ให้ส่งมิติการบีบอย่างชัดเจนเสมอเพื่อหลีกเลี่ยงเรื่องไม่คาดคิด

โดยส่วนใหญ่แล้ว การแมประหว่างประเภทฟิลด์ Proto และประเภท dTensorFlow นั้นตรงไปตรงมา อย่างไรก็ตาม มีกรณีพิเศษบางประการ:

- ฟิลด์โปรโตที่มีข้อความย่อยหรือกลุ่มสามารถแปลงเป็น `DT_STRING` เท่านั้น (ข้อความย่อยที่ต่อเนื่องกัน) นี่เป็นการลดความซับซ้อนของ API สตริงผลลัพธ์สามารถใช้เป็นอินพุตไปยังอินสแตนซ์อื่นของ decode_proto op

- TensorFlow ขาดการสนับสนุนจำนวนเต็มที่ไม่ได้ลงนาม ops แสดงถึงประเภท uint64 เป็น `DT_INT64` โดยมีรูปแบบบิตเสริมสองส่วนเหมือนกัน (วิธีที่ชัดเจน) ค่า int32 ที่ไม่ได้ลงนามสามารถแสดงได้ทุกประการด้วยการระบุประเภท `DT_INT64` หรือใช้ส่วนเสริมสองส่วนหากผู้เรียกระบุ `DT_INT32` ในแอตทริบิวต์ `output_types`

- ช่อง "แผนที่" ไม่ได้ถูกถอดรหัสโดยตรง โดยจะถือเป็นช่อง "ซ้ำ" ของประเภทรายการที่เหมาะสม โปรโตคอมไพเลอร์กำหนดประเภทรายการสำหรับฟิลด์แผนที่แต่ละฟิลด์ ชื่อประเภทคือชื่อฟิลด์ ซึ่งแปลงเป็น "CamelCase" โดยมี "Entry" ต่อท้าย ข้อความ tf.train.Features.FeatureEntry เป็นตัวอย่างของประเภท 'รายการ' โดยนัยประเภทใดประเภทหนึ่งเหล่านี้

- ช่อง `enum` ควรอ่านเป็น int32

รองรับทั้งอนุกรมไบนารีและโปรโตข้อความ และสามารถเลือกได้โดยใช้แอตทริบิวต์ "รูปแบบ"

แอตทริบิวต์ `descriptor_source` จะเลือกแหล่งที่มาของตัวอธิบายโปรโตคอลเพื่อปรึกษาเมื่อค้นหา `message_type` นี่อาจเป็น:

- สตริงว่างหรือ "local://" ซึ่งในกรณีนี้ตัวอธิบายโปรโตคอลจะถูกสร้างขึ้นสำหรับคำจำกัดความโปรโต C++ (ไม่ใช่ Python) ที่เชื่อมโยงกับไบนารี

- ไฟล์ ซึ่งในกรณีนี้ตัวอธิบายโปรโตคอลจะถูกสร้างขึ้นจากไฟล์ ซึ่งคาดว่าจะมี `FileDescriptorSet` ที่ถูกทำให้เป็นอนุกรมเป็นสตริง หมายเหตุ: คุณสามารถสร้างไฟล์ `descriptor_source` ได้โดยใช้ตัวเลือก `--descriptor_set_out` และ `--include_imports` ไปยังคอมไพเลอร์โปรโตคอล `protoc`

- A "ไบต์: // " ซึ่งตัวอธิบายโปรโตคอลถูกสร้างขึ้นจาก ` ` ซึ่งคาดว่าจะเป็น `FileDescriptorSet` ที่ซีเรียลไลซ์เป็นสตริง

คลาสที่ซ้อนกัน

ระดับ ถอดรหัส Proto.Options แอ็ตทริบิวต์ทางเลือกสำหรับ DecodeProto

วิธีการสาธารณะ

DecodeProto แบบคงที่
สร้าง ( ขอบเขตขอบเขต ตัว ถูกดำเนินการ <String> ไบต์ ประเภทข้อความสตริง รายการ<สตริง> ชื่อฟิลด์ รายการ<Class<?>> ประเภทเอาต์พุต ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ DecodeProto ใหม่
DecodeProto.Options แบบคงที่
descriptorSource (สตริง descriptorSource)
DecodeProto.Options แบบคงที่
messageFormat (รูปแบบข้อความสตริง)
DecodeProto.Options แบบคงที่
ฆ่าเชื้อ (ฆ่าเชื้อแบบบูลีน)
เอาต์พุต <จำนวนเต็ม>
ขนาด ()
เทนเซอร์ของ int32 ที่มีรูปร่าง `[batch_shape, len(field_names)]`
รายการ < เอาท์พุต <?>>
ค่า ()
รายการเทนเซอร์ที่มีค่าสำหรับฟิลด์ที่เกี่ยวข้อง

วิธีการสืบทอด

วิธีการสาธารณะ

สร้าง DecodeProto แบบคงที่สาธารณะ (ขอบเขต ขอบเขต ตัว ถูกดำเนินการ <สตริง> ไบต์ ประเภทข้อความสตริง รายการ <สตริง> ชื่อฟิลด์ รายการ <คลาส <?>> ประเภทเอาต์พุต ตัวเลือก... ตัวเลือก)

วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ DecodeProto ใหม่

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
ไบต์ เทนเซอร์ของโปรโตอนุกรมที่มีรูปร่าง `batch_shape`
ประเภทข้อความ ชื่อของประเภทข้อความโปรโตที่จะถอดรหัส
ชื่อฟิลด์ รายการสตริงที่มีชื่อฟิลด์โปรโต ฟิลด์ส่วนขยายสามารถถอดรหัสได้โดยใช้ชื่อเต็ม เช่น EXT_PACKAGE.EXT_FIELD_NAME
ประเภทเอาต์พุต รายการประเภท TF ที่จะใช้สำหรับฟิลด์ที่เกี่ยวข้องใน field_names
ตัวเลือก มีค่าแอตทริบิวต์ทางเลือก
การส่งคืน
  • อินสแตนซ์ใหม่ของ DecodeProto

สาธารณะ DecodeProto.Options descriptorSource แบบคงที่ (สตริง descriptorSource)

พารามิเตอร์
แหล่งที่มาของคำอธิบาย ค่าพิเศษ `local://` หรือเส้นทางไปยังไฟล์ที่มี `FileDescriptorSet` ที่เป็นอนุกรม

DecodeProto.Options messageFormat แบบคงที่สาธารณะ (String messageFormat)

พารามิเตอร์
ข้อความรูปแบบ `ไบนารี่` หรือ text ก็ได้

DecodeProto.Options แบบคงที่สาธารณะ ฆ่าเชื้อ (ฆ่าเชื้อบูลีน)

พารามิเตอร์
ฆ่าเชื้อ ไม่ว่าจะฆ่าเชื้อผลหรือไม่ก็ตาม

ขนาด เอาต์พุต สาธารณะ <จำนวนเต็ม> ()

เทนเซอร์ของ int32 ที่มีรูปร่าง `[batch_shape, len(field_names)]` แต่ละรายการคือจำนวนค่าที่พบในฟิลด์ที่เกี่ยวข้อง ช่องที่ไม่บังคับอาจมีค่า 0 หรือ 1

รายการสาธารณะ < เอาท์พุต <?>> ค่า ()

รายการเทนเซอร์ที่มีค่าสำหรับฟิลด์ที่เกี่ยวข้อง `values[i]` มีประเภทข้อมูล `output_types[i]` และรูปร่าง `[batch_shape, max(sizes[...,i])]`