Operasi mengekstrak bidang dari pesan buffer protokol serial menjadi tensor.
Operasi `decode_proto` mengekstrak bidang dari pesan buffering protokol serial menjadi tensor. Bidang di `nama_bidang` didekodekan dan dikonversi ke `tipe_output` yang sesuai jika memungkinkan.
Nama `message_type` harus diberikan untuk memberikan konteks pada nama bidang. Deskriptor pesan sebenarnya dapat dicari di kumpulan deskriptor tertaut atau nama file yang disediakan oleh pemanggil menggunakan atribut `descriptor_source`.
Setiap tensor keluaran adalah tensor padat. Artinya, elemen tersebut diberi bantalan untuk menampung jumlah elemen berulang terbesar yang terlihat di minibatch masukan. (Bentuknya juga diberi bantalan satu untuk mencegah dimensi berukuran nol). Jumlah pengulangan sebenarnya untuk setiap contoh di minibatch dapat ditemukan di keluaran `ukuran`. Dalam banyak kasus, keluaran `decode_proto` langsung dimasukkan ke tf.squeeze jika nilai yang hilang tidak menjadi masalah. Saat menggunakan tf.squeeze, selalu berikan dimensi pemerasan secara eksplisit untuk menghindari kejutan.
Secara umum, pemetaan antara tipe kolom Proto dan tipe TensorFlow sangatlah mudah. Namun, ada beberapa kasus khusus:
- Bidang proto yang berisi subpesan atau grup hanya dapat dikonversi ke `DT_STRING` (subpesan berseri). Hal ini untuk mengurangi kompleksitas API. String yang dihasilkan dapat digunakan sebagai input ke instance lain dari operasi decode_proto.
- TensorFlow tidak memiliki dukungan untuk bilangan bulat yang tidak ditandatangani. Operasi mewakili tipe uint64 sebagai `DT_INT64` dengan pola bit dua komplemen yang sama (cara yang jelas). Nilai int32 yang tidak ditandatangani dapat direpresentasikan secara tepat dengan menentukan tipe `DT_INT64`, atau menggunakan pelengkap ganda jika pemanggil menentukan `DT_INT32` dalam atribut `output_types`.
Serialisasi proto biner dan teks didukung, dan dapat dipilih menggunakan atribut `format`.
Atribut `descriptor_source` memilih sumber deskriptor protokol untuk dilihat saat mencari `message_type`. Ini mungkin:
- String kosong atau "local://", dalam hal ini deskriptor protokol dibuat untuk definisi proto C++ (bukan Python) yang ditautkan ke biner.
- Sebuah file, dalam hal ini deskriptor protokol dibuat dari file tersebut, yang diharapkan berisi `FileDescriptorSet` yang diserialkan sebagai string. CATATAN: Anda dapat membuat file `descriptor_source` menggunakan opsi `--descriptor_set_out` dan `--include_imports` ke kompiler protokol `protoc`.
- A "byte: //
Kelas Bersarang
kelas | DecodeProto.Opsi | Atribut opsional untuk DecodeProto |
Metode Publik
DecodeProto statis | |
DecodeProto.Options statis | descriptorSource (String descriptorSource) |
DecodeProto.Options statis | format pesan (Format pesan string) |
DecodeProto.Options statis | membersihkan (sanitasi Boolean) |
Keluaran <Bilangan Bulat> | ukuran () Tensor int32 dengan bentuk `[batch_shape, len(field_names)]`. |
Daftar< Keluaran <?>> | nilai () Daftar tensor yang berisi nilai untuk bidang terkait. |
Metode Warisan
Metode Publik
public static DecodeProto membuat ( Lingkup cakupan , Operan <String> byte, String messageType, Daftar<String> Nama bidang, Daftar<Kelas<?>> Jenis keluaran, Opsi... opsi)
Metode pabrik untuk membuat kelas yang membungkus operasi DecodeProto baru.
Parameter
cakupan | ruang lingkup saat ini |
---|---|
byte | Tensor proto berseri dengan bentuk `batch_shape`. |
tipe pesan | Nama jenis pesan proto yang akan didekode. |
Nama bidang | Daftar string yang berisi nama bidang proto. Bidang ekstensi dapat didekodekan dengan menggunakan nama lengkapnya, misalnya EXT_PACKAGE.EXT_FIELD_NAME. |
Tipe keluaran | Daftar tipe TF yang akan digunakan untuk masing-masing bidang di nama_bidang. |
pilihan | membawa nilai atribut opsional |
Kembali
- contoh baru DecodeProto
DecodeProto.Options descriptorSource statis publik (String descriptorSource)
Parameter
deskriptorSumber | Entah nilai khusus `local://` atau jalur ke file yang berisi `FileDescriptorSet` berseri. |
---|
DecodeProto.Options messageFormat statis publik (String messageFormat)
Parameter
format pesan | Entah `biner` atau `teks`. |
---|
DecodeProto.Options sanitasi publik statis (sanitasi Boolean)
Parameter
membersihkan | Apakah akan membersihkan hasilnya atau tidak. |
---|
publik Output <Integer> ukuran ()
Tensor int32 dengan bentuk `[batch_shape, len(field_names)]`. Setiap entri adalah jumlah nilai yang ditemukan untuk bidang terkait. Bidang opsional mungkin memiliki nilai 0 atau 1.
Daftar publik< Keluaran <?>> nilai ()
Daftar tensor yang berisi nilai untuk bidang terkait. `values[i]` memiliki tipe data `output_types[i]` dan bentuk `[batch_shape, max(sizes[...,i])]`.