DecodeProto

clase final pública DecodeProto

La operación extrae campos de un mensaje de buffer de protocolo serializado en tensores.

Nota: Esta API está diseñada para ser ortogonal en lugar de amigable para los humanos. Puede usarse para analizar protos de entrada a mano, pero está diseñado para usarse en código generado.

La operación `decode_proto` extrae campos de un mensaje de buffer de protocolo serializado en tensores. Los campos en `field_names` se decodifican y se convierten a los `output_types` correspondientes si es posible.

Se debe proporcionar un nombre `message_type` para dar contexto a los nombres de los campos. El descriptor del mensaje real se puede buscar en el grupo de descriptores vinculados o en un nombre de archivo proporcionado por la persona que llama usando el atributo `descriptor_source`.

Cada tensor de salida es un tensor denso. Esto significa que está acolchado para contener la mayor cantidad de elementos repetidos vistos en el minibatch de entrada. (La forma también está acolchada con uno para evitar dimensiones de tamaño cero). Los recuentos de repeticiones reales para cada ejemplo del minibatch se pueden encontrar en la salida de "tamaños". En muchos casos, la salida de `decode_proto` se introduce inmediatamente en tf.squeeze si los valores faltantes no son un problema. Cuando utilice tf.squeeze, pase siempre explícitamente la dimensión de compresión para evitar sorpresas.

En su mayor parte, el mapeo entre los tipos de campo Proto y los tipos de TensorFlow es sencillo. Sin embargo, existen algunos casos especiales:

- Un campo proto que contiene un submensaje o grupo solo se puede convertir a `DT_STRING` (el submensaje serializado). Esto es para reducir la complejidad de la API. La cadena resultante se puede utilizar como entrada para otra instancia de la operación decode_proto.

- TensorFlow carece de soporte para números enteros sin signo. Las operaciones representan los tipos uint64 como `DT_INT64` con el mismo patrón de bits en complemento a dos (la forma obvia). Los valores int32 sin signo se pueden representar exactamente especificando el tipo `DT_INT64`, o usando complemento a dos si la persona que llama especifica `DT_INT32` en el atributo `output_types`.

- Los campos `mapa` no se decodifican directamente. Se tratan como campos "repetidos", del tipo de entrada apropiado. El protocompilador define tipos de entrada para cada campo del mapa. El nombre del tipo es el nombre del campo, convertido a "CamelCase" con "Entry" añadido. El mensaje tf.train.Features.FeatureEntry es un ejemplo de uno de estos tipos de "Entrada" implícitos.

- Los campos `enum` deben leerse como int32.

Se admiten serializaciones de proto binarios y de texto, y se pueden elegir utilizando el atributo "formato".

El atributo `descriptor_source` selecciona la fuente de los descriptores de protocolo para consultar al buscar `message_type`. Esto podría ser:

- Una cadena vacía o "local://", en cuyo caso se crean descriptores de protocolo para definiciones de proto C++ (no Python) vinculadas al binario.

- Un archivo, en cuyo caso los descriptores de protocolo se crean a partir del archivo, que se espera que contenga un `FileDescriptorSet` serializado como una cadena. NOTA: Puede crear un archivo `descriptor_source` usando las opciones `--descriptor_set_out` y `--include_imports` para el compilador de protocolos `protoc`.

- Un "byte:// ", en el que los descriptores de protocolo se crean a partir de ` `, que se espera que sea un `FileDescriptorSet` serializado como una cadena.

Clases anidadas

clase DecodeProto.Opciones Atributos opcionales para DecodeProto

Métodos públicos

DecodeProto estático
crear (alcance alcance , Operando <Cadena> bytes, Cadena tipo de mensaje, Lista<Cadena> nombres de campo, Lista<Clase<?>> tipos de salida, Opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación DecodeProto.
DecodeProto.Options estático
descriptorSource (Cadena descriptorSource)
DecodeProto.Options estático
messageFormat (cadena formato de mensaje)
DecodeProto.Options estático
desinfectar (desinfectar booleano)
Salida <Entero>
tamaños ()
Tensor de int32 con forma `[batch_shape, len(field_names)]`.
Lista< Salida <?>>
valores ()
Lista de tensores que contienen valores para el campo correspondiente.

Métodos heredados

Métodos públicos

DecodeProto público estático para crear (alcance de alcance , bytes de operando <cadena>, tipo de mensaje de cadena, lista <cadena> nombres de campo, lista <clase <?>> tipos de salida, opciones... opciones)

Método de fábrica para crear una clase que envuelve una nueva operación DecodeProto.

Parámetros
alcance alcance actual
bytes Tensor de protos serializados con forma `batch_shape`.
Tipo de mensaje Nombre del tipo de mensaje proto a decodificar.
nombres de campo Lista de cadenas que contienen nombres de protocampos. Un campo de extensión se puede decodificar utilizando su nombre completo, por ejemplo, EXT_PACKAGE.EXT_FIELD_NAME.
tipos de salida Lista de tipos de TF que se utilizarán para el campo respectivo en nombres_de_campo.
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de DecodeProto

DecodeProto.Options estático público descriptorSource (DescriptorSource de cadena)

Parámetros
descriptorFuente Ya sea el valor especial `local://` o una ruta a un archivo que contiene un `FileDescriptorSet` serializado.

público estático DecodeProto.Options messageFormat (cadena messageFormat)

Parámetros
formato de mensaje Ya sea "binario" o text .

DecodeProto.Options estático público desinfectar (desinfectar booleano)

Parámetros
desinfectar Ya sea para desinfectar el resultado o no.

Tamaños públicos de salida <entero> ()

Tensor de int32 con forma `[batch_shape, len(field_names)]`. Cada entrada es el número de valores encontrados para el campo correspondiente. Los campos opcionales pueden tener valores 0 o 1.

Lista pública < Salida <?>> valores ()

Lista de tensores que contienen valores para el campo correspondiente. `values[i]` tiene el tipo de datos `output_types[i]` y la forma `[batch_shape, max(sizes[...,i])]`.