L'operazione estrae i campi da un protocollo serializzato memorizzando il messaggio in tensori.
L'operazione "decode_proto" estrae i campi da un protocollo serializzato e bufferizza i messaggi in tensori. I campi in "field_names" vengono decodificati e convertiti nei corrispondenti "output_types" se possibile.
È necessario fornire un nome "tipo_messaggio" per fornire il contesto per i 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 viene inoltre riempita con uno per evitare dimensioni pari a zero). Il numero effettivo di ripetizioni per ciascun esempio nel minibatch può essere trovato nell'output "sizes". In molti casi l'output di `decode_proto` viene inserito immediatamente in tf.squeeze se i valori mancanti non sono un problema. Quando si utilizza tf.squeeze, passare sempre esplicitamente la dimensione squeeze per evitare sorprese.
Nella maggior parte dei casi, la mappatura tra i tipi di campo Proto e i dtype di 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 dell'operazione decode_proto.
- TensorFlow non supporta gli interi senza segno. Le operazioni rappresentano i tipi uint64 come `DT_INT64` con lo stesso pattern di bit in complemento a due (nel modo ovvio). I valori int32 senza segno possono essere rappresentati esattamente specificando il tipo "DT_INT64" o utilizzando il complemento a due se il chiamante specifica "DT_INT32" nell'attributo "output_types".
Sono supportate sia la serializzazione binaria che quella di prototipi di testo e possono essere scelte utilizzando 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 definizioni prototipali C++ (non Python) collegate al file 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 creare un file `descriptor_source` utilizzando le opzioni `--descriptor_set_out` e `--include_imports` nel compilatore di protocolli `protoc`.
- Un "byte://
Classi nidificate
classe | DecodeProto.Options | Attributi facoltativi per DecodeProto |
Metodi pubblici
DecodificaProto statico | create ( ambito ambito , operando <String> byte, stringa messageType, List<String> fieldNames, List<Class<?>> outputTypes, Opzioni... opzioni) Metodo factory per creare una classe che racchiude una nuova operazione DecodeProto. |
DecodeProto.Options statico | descriptorSource (String descriptorSource) |
DecodeProto.Options statico | messageFormat (String messageFormat) |
DecodeProto.Options statico | disinfettare (sanifica booleano) |
Output <Intero> | 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 ( ambito ambito , operando <String> byte, String messageType, List<String> fieldNames, List<Class<?>> outputTypes, Opzioni... opzioni)
Metodo factory per creare una classe che racchiude una nuova operazione DecodeProto.
Parametri
scopo | ambito attuale |
---|---|
byte | Tensore di prototipi serializzati con forma `batch_shape`. |
messageType | Nome del tipo di messaggio prototipale da decodificare. |
fieldNames | Elenco di stringhe contenenti nomi di campi proto. Un campo ampliamento 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
descrittoreSource | Il valore speciale "local://" o il percorso di un file contenente un "FileDescriptorSet" serializzato. |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
Parametri
messageFormat | O "binario" o "testo". |
---|
public static DecodeProto.Options sanitize (sanitize booleano)
Parametri
igienizzare | Se disinfettare il risultato o meno. |
---|
dimensioni dell'output <intero> pubblico ()
Tensore di int32 con forma `[batch_shape, len(field_names)]`. Ogni voce rappresenta il numero di valori trovati per il campo corrispondente. I campi facoltativi possono avere 0 o 1 valore.
elenco pubblico< Output <?>> valori ()
Elenco di tensori contenenti valori per il campo corrispondente. "values[i]" ha il tipo di dati "output_types[i]" e la forma "[batch_shape, max(sizes[...,i])]".