L'op estrae i campi da un protocollo serializzato bufferizza il messaggio in tensori.
L'operazione `decode_proto` estrae i campi da un messaggio bufferizzato di protocollo serializzato in tensori. I campi in "field_names" vengono decodificati e convertiti nei corrispondenti "output_types", se possibile.
È necessario fornire un nome "message_type" per fornire un contesto ai nomi dei campi. Il descrittore del messaggio effettivo può essere cercato nel pool di descrittori collegati o in un nome file fornito dal chiamante utilizzando l'attributo `descriptor_source`.
Ogni tensore di uscita è un tensore denso. Ciò significa che è riempito per contenere il maggior numero di elementi ripetuti visti nel minibatch di input. (La forma è anche imbottita di uno per evitare dimensioni zero). Il conteggio delle ripetizioni effettive per ogni esempio nel minibatch può essere trovato nell'output di `size`. In molti casi l'output di `decode_proto` viene immesso immediatamente in tf.squeeze se i valori mancanti non sono un problema. Quando si utilizza tf.squeeze, passare sempre la dimensione squeeze in modo esplicito per evitare sorprese.
Per la maggior parte, la mappatura tra i tipi di campo Proto e i tipi di campo TensorFlow è semplice. Tuttavia, ci sono alcuni casi speciali:
- Un campo proto che contiene un sottomessaggio o un gruppo può essere convertito solo in `DT_STRING` (il sottomessaggio serializzato). Questo per ridurre la complessità dell'API. La stringa risultante può essere utilizzata come input per un'altra istanza di decode_proto op.
- TensorFlow non supporta gli interi senza segno. Gli op rappresentano i tipi uint64 come un `DT_INT64` con lo stesso modello di bit in complemento a due (il modo ovvio). I valori int32 senza segno possono essere rappresentati esattamente specificando il tipo `DT_INT64`, o usando il complemento a due se il chiamante specifica` DT_INT32` nell'attributo `output_types`.
Sono supportate sia le serializzazioni di proto binari che di testo e possono essere scelte usando l'attributo `format`.
L'attributo `descriptor_source` seleziona la fonte dei descrittori di protocollo da consultare quando si cerca` message_type`. Può essere:
- Una stringa vuota o "local: //", nel qual caso vengono creati descrittori di protocollo per le proto definizioni C ++ (non Python) collegate al binario.
- Un file, nel qual caso i descrittori di protocollo vengono creati dal file, che dovrebbe contenere un `FileDescriptorSet` serializzato come una stringa. NOTA: Puoi costruire un file `descriptor_source` usando le opzioni` --descriptor_set_out` e `--include_imports` nel compilatore del protocollo` protoc`.
- A "byte: //
Classi annidate
classe | DecodeProto.Options | Attributi opzionali per DecodeProto |
Metodi pubblici
DecodeProto statico | create ( Scope scope, Operando <String> bytes, String messageType, List <String> fieldNames, List <Class <? >> outputTypes, Options ... options) Metodo Factory per creare una classe che racchiude una nuova operazione DecodeProto. |
statico DecodeProto.Options | descriptorSource (String descriptorSource) |
statico DecodeProto.Options | messageFormat (String messageFormat) |
statico DecodeProto.Options | sanitize (Boolean sanitize) |
Uscita <Integer> | dimensioni () Tensore di int32 con forma `[batch_shape, len (field_names)]`. |
Elenco < Uscita <? >> | valori () Elenco di tensori contenenti valori per il campo corrispondente. |
Metodi ereditati
Metodi pubblici
public static DecodeProto create ( Scope scope, Operand <String> bytes, String messageType, List <String> fieldNames, List <Class <? >> outputTypes, Options ... options)
Metodo Factory per creare una classe che racchiude una nuova operazione DecodeProto.
Parametri
scopo | ambito attuale |
---|---|
byte | Tensore di protos serializzati con forma `batch_shape`. |
messageType | Nome del tipo di messaggio proto da decodificare. |
fieldNames | Elenco di stringhe contenenti nomi di campi proto. Un campo di estensione può essere decodificato utilizzando il suo nome completo, ad esempio EXT_PACKAGE.EXT_FIELD_NAME. |
outputTypes | Elenco dei tipi di TF da utilizzare per il rispettivo campo in field_names. |
opzioni | trasporta valori di attributi opzionali |
ritorna
- una nuova istanza di DecodeProto
public static DecodeProto.Options descriptorSource (String descriptorSource)
Parametri
descriptorSource | O il valore speciale `local: //` o un percorso a un file contenente un `FileDescriptorSet` serializzato. |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
Parametri
messageFormat | O "binary" o "text". |
---|
public static DecodeProto.Options sanitize (Boolean sanitize)
Parametri
igienizzare | Se disinfettare o meno il risultato. |
---|
public Output <Integer> dimensioni ()
Tensore di int32 con forma `[batch_shape, len (field_names)]`. Ogni voce è il numero di valori trovati per il campo corrispondente. I campi facoltativi possono avere valori 0 o 1.
public List < Output <? >> valori ()
Elenco di tensori contenenti valori per il campo corrispondente. `values [i]` ha tipo di dati `output_types [i]` e forma `[batch_shape, max (size [..., i])]`.