O op extrai campos de uma mensagem de buffers de protocolo serializada em tensores.
A operação `decode_proto` extrai campos de uma mensagem de buffers de protocolo serializada em tensores. Os campos em `field_names` são decodificados e convertidos para os` output_types` correspondentes, se possível.
Um nome `message_type` deve ser fornecido para dar contexto aos nomes dos campos. O descritor de mensagem real pode ser encontrado no pool de descritores vinculados ou em um nome de arquivo fornecido pelo chamador usando o atributo `descriptor_source`.
Cada tensor de saída é um tensor denso. Isso significa que ele é preenchido para conter o maior número de elementos repetidos vistos no minibatch de entrada. (A forma também é preenchida por um para evitar dimensões de tamanho zero). As contagens reais de repetição para cada exemplo no minibatch podem ser encontradas na saída de `tamanhos`. Em muitos casos, a saída de `decode_proto` é alimentada imediatamente em tf.squeeze se os valores ausentes não forem uma preocupação. Ao usar tf.squeeze, sempre passe a dimensão squeeze explicitamente para evitar surpresas.
Na maior parte, o mapeamento entre os tipos de campo Proto e os dtypes do TensorFlow é direto. No entanto, existem alguns casos especiais:
- Um campo proto que contém uma submensagem ou grupo só pode ser convertido em `DT_STRING` (a submensagem serializada). Isso é para reduzir a complexidade da API. A string resultante pode ser usada como entrada para outra instância da op decode_proto.
- O TensorFlow não tem suporte para inteiros não assinados. Os ops representam tipos uint64 como um `DT_INT64` com o mesmo padrão de bits de complemento de dois (a maneira óbvia). Os valores int32 sem sinal podem ser representados exatamente especificando o tipo `DT_INT64`, ou usando complemento de dois se o chamador especificar` DT_INT32` no atributo `output_types`.
Tanto a proto serialização binária quanto a de texto são suportadas e podem ser escolhidas usando o atributo `format`.
O atributo `descriptor_source` seleciona a fonte dos descritores de protocolo a serem consultados ao pesquisar` message_type`. Pode ser:
- Uma string vazia ou "local: //", caso em que os descritores de protocolo são criados para definições de proto C ++ (não Python) vinculadas ao binário.
- Um arquivo, em cujo caso os descritores de protocolo são criados a partir do arquivo, que deve conter um `FileDescriptorSet` serializado como uma string. NOTA: Você pode construir um arquivo `descriptor_source` usando as opções` --descriptor_set_out` e `--include_imports` para o compilador de protocolo` protoc`.
- A "bytes: //
Classes aninhadas
aula | DecodeProto.Options | Atributos opcionais para DecodeProto |
Métodos Públicos
DecodeProto estático | criar ( escopo do escopo, Operando <String> bytes, String messageType, List <String> fieldNames, List <Class <? >> outputTypes, Options ... options) Método de fábrica para criar uma classe envolvendo uma nova operação DecodeProto. |
static DecodeProto.Options | descriptorSource (String descriptorSource) |
static DecodeProto.Options | messageFormat (String messageFormat) |
static DecodeProto.Options | sanitize ( higienização booleana) |
Saída <Integer> | tamanhos () Tensor de int32 com forma `[batch_shape, len (field_names)]`. |
Listar < Resultado <? >> | valores () Lista de tensores contendo valores para o campo correspondente. |
Métodos herdados
Métodos Públicos
public static DecodeProto create ( Escopo de escopo, Operand <String> bytes, String messageType, List <String> fieldNames, List <Class <? >> outputTypes, Options ... options)
Método de fábrica para criar uma classe envolvendo uma nova operação DecodeProto.
Parâmetros
alcance | escopo atual |
---|---|
bytes | Tensor de protos serializados com forma `batch_shape`. |
tipo de mensagem | Nome do tipo de mensagem proto a decodificar. |
fieldNames | Lista de strings contendo nomes de campos protótipos. Um campo de extensão pode ser decodificado usando seu nome completo, por exemplo, EXT_PACKAGE.EXT_FIELD_NAME. |
outputTypes | Lista de tipos de TF a serem usados para o respectivo campo em field_names. |
opções | carrega valores de atributos opcionais |
Devoluções
- uma nova instância de DecodeProto
public static DecodeProto.Options descriptorSource (String descriptorSource)
Parâmetros
descriptorSource | Tanto o valor especial `local: //` ou um caminho para um arquivo contendo um `FileDescriptorSet` serializado. |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
Parâmetros
messageFormat | Pode ser `binário` ou` texto`. |
---|
public static DecodeProto.Options sanitize (Boolean sanitize)
Parâmetros
higienizar | Se deve higienizar o resultado ou não. |
---|
Public Output <Integer> Tamanhos ()
Tensor de int32 com forma `[batch_shape, len (field_names)]`. Cada entrada é o número de valores encontrados para o campo correspondente. Os campos opcionais podem ter 0 ou 1 valor.
Lista pública < Saída <? >> valores ()
Lista de tensores contendo valores para o campo correspondente. `valores [i]` tem tipo de dados `output_types [i]` e forma `[batch_shape, max (tamanhos [..., i])]`.