DecodeProto

clase final pública DecodeProto

El op extrae campos de un mensaje de búfer de protocolo serializado en tensores.

Nota: Esta API está diseñada para la ortogonalidad en lugar de la facilidad de uso para los humanos. Se puede usar para analizar prototipos 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 búfer de protocolo serializado en tensores. Los campos en `field_names` se descodifican y se convierten a los correspondientes `output_types` 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 se rellena para contener la mayor cantidad de elementos repetidos vistos en el minilote de entrada. (La forma también está rellena con uno para evitar dimensiones de tamaño cero). Los recuentos reales de repeticiones para cada ejemplo en el minilote se pueden encontrar en la salida de `tamaños`. En muchos casos, la salida de `decode_proto` se envía inmediatamente a tf.squeeze si los valores faltantes no son una preocupación. Cuando use tf.squeeze, siempre pase la dimensión de compresión explícitamente para evitar sorpresas.

En su mayor parte, el mapeo entre los tipos de campo de Proto y los tipos de campo de TensorFlow es sencillo. Sin embargo, hay 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 usar como entrada para otra instancia de la operación decode_proto.

- TensorFlow no admite números enteros sin signo. Las operaciones representan los tipos uint64 como `DT_INT64` con el mismo patrón de bits de complemento a dos (la forma obvia). Los valores int32 sin signo se pueden representar exactamente especificando el tipo `DT_INT64`, o usando el 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 los tipos de entrada para cada campo del mapa. El nombre de tipo es el nombre del campo, convertido a "CamelCase" con "Entrada" adjunto. El mensaje tf.train.Features.FeatureEntry es un ejemplo de uno de estos tipos implícitos de `Entrada`.

- Los campos `enum` deben leerse como int32.

Se admiten serializaciones de prototipos de texto y binarios, y se pueden elegir mediante 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 las protodefiniciones de C++ (no de 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 protocolo `protoc`.

- Un "bytes:// ", 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 ( Ámbito de alcance, Operando <String> bytes, String messageType, List<String> fieldNames, List<Class<?>> outputTypes, Options... options)
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
formato de mensaje (String formato de mensaje)
DecodeProto.Options estático
desinfectar (desinfección booleana)
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

public static DecodeProto create ( Scope scope, Operand <String> bytes, String messageType, List<String> fieldNames, List<Class<?>> outputTypes, Options... options)

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 campos prototipo. Un campo de extensión se puede descodificar utilizando su nombre completo, por ejemplo, EXT_PACKAGE.EXT_FIELD_NAME.
tipos de salida Lista de tipos de TF a usar para el campo respectivo en field_names.
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de DecodeProto

public static DecodeProto.Options descriptorSource (String descriptorSource)

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

public static DecodeProto.Options messageFormat (String messageFormat)

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

public static DecodeProto.Options sanitize (sanitización booleana)

Parámetros
desinfectar Si higienizar el resultado o no.

Salida pública <Entero> tamaños ()

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