La operación extrae campos de un mensaje de búfer de protocolo serializado en tensores.
La operación `decode_proto` extrae campos de un mensaje de búfer de protocolo serializado en tensores. Los campos en `field_names` se decodifican 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 de mensaje real se puede buscar en el conjunto de descriptores vinculados o en un nombre de archivo proporcionado por la persona que llama utilizando 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 que se ven en el minibatch de entrada. (La forma también está acolchada por uno para evitar dimensiones de tamaño cero). Los recuentos de repeticiones reales para cada ejemplo en el minibatch se pueden encontrar en la salida de "tamaños". En muchos casos, la salida de `decode_proto` se alimenta inmediatamente a tf.squeeze si los valores perdidos no son una preocupación. Cuando utilice tf.squeeze, siempre pase la dimensión de compresión explícitamente para evitar sorpresas.
En su mayor parte, la asignación entre los tipos de campo de Proto y los tipos de dtypes de TensorFlow es sencilla. 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 decode_proto op.
- TensorFlow carece de soporte para enteros sin signo. Las operaciones representan los tipos uint64 como un `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 complemento a dos si el llamador especifica` DT_INT32` en el atributo `output_types`.
Se admiten tanto proto serializaciones binarias como de texto, y se pueden elegir utilizando el atributo `formato`.
El atributo `descriptor_source` selecciona la fuente de descriptores de protocolo para consultar al buscar` message_type`. Esto podría ser:
- Una cadena vacía o "local: //", en cuyo caso los descriptores de protocolo se crean para las definiciones de proto C ++ (no Python) vinculadas al binario.
- Un archivo, en cuyo caso se crean descriptores de protocolo 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` e `--include_imports` para el compilador de protocolo` protocol`.
- A "bytes: //
Clases anidadas
clase | DecodeProto.Options | 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, Opciones ... opciones) Método de fábrica para crear una clase que envuelva una nueva operación DecodeProto. |
estático DecodeProto.Options | descriptorSource (String descriptorSource) |
estático DecodeProto.Options | messageFormat (String messageFormat) |
estático DecodeProto.Options | 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
public static DecodeProto create ( alcance de alcance, operando <String> bytes, String messageType, List <String> fieldNames, List <Class <? >> outputTypes, Opciones ... opciones)
Método de fábrica para crear una clase que envuelva 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 proto mensaje a decodificar. |
fieldNames | Lista de cadenas que contienen nombres de campos proto. Un campo de extensión se puede decodificar usando su nombre completo, por ejemplo, EXT_PACKAGE.EXT_FIELD_NAME. |
outputTypes | Lista de tipos de TF que se utilizarán 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
descriptorSource | O el valor especial `local: //` o una ruta a un archivo que contiene un `FileDescriptorSet` serializado. |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
Parámetros
messageFormat | Ya sea "binario" o "texto". |
---|
public static DecodeProto.Options desinfectar (desinfectar booleano)
Parámetros
desinfectar | Ya sea para desinfectar el resultado o no. |
---|
Public Output <Integer> 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 forma `[batch_shape, max (tamaños [..., i])]`.