DecodeProto

DecodeProto kelas akhir publik

Operasi mengekstrak bidang dari pesan buffer protokol serial menjadi tensor.

Catatan: API ini dirancang untuk ortogonalitas, bukan ramah manusia. Ini dapat digunakan untuk mengurai proto input dengan tangan, tetapi ini dimaksudkan untuk digunakan dalam kode yang dihasilkan.

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 terbanyak 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`.

- Bidang `peta` tidak didekodekan secara langsung. Bidang tersebut diperlakukan sebagai bidang `berulang`, dengan jenis entri yang sesuai. Kompiler proto mendefinisikan tipe entri untuk setiap bidang peta. Nama jenis adalah nama bidang, dikonversi menjadi "CamelCase" dengan tambahan "Entri". Pesan tf.train.Features.FeatureEntry adalah contoh dari salah satu tipe `Entry` implisit ini.

- Bidang `enum` harus dibaca sebagai int32.

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: // ", di mana deskriptor protokol dibuat dari ` `, yang diharapkan berupa `FileDescriptorSet` yang diserialkan sebagai string.

Kelas Bersarang

kelas DecodeProto.Opsi Atribut opsional untuk DecodeProto

Metode Publik

DecodeProto statis
buat ( Lingkup cakupan , Operan <String> byte, Tipe pesan string, Daftar<String> Nama bidang, Daftar<Kelas<?>> Tipe keluaran, Opsi... opsi)
Metode pabrik untuk membuat kelas yang membungkus operasi DecodeProto baru.
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 Baik `biner` atau text .

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])]`.