DecodeProto

classe finale publique DecodeProto

L'opération extrait les champs d'un message de tampon de protocole sérialisé dans des tenseurs.

L'opération `decode_proto` extrait les champs d'un message de tampon de protocole sérialisé dans des tenseurs. Les champs dans `field_names` sont décodés et convertis en `output_types` correspondants si possible.

Un nom `message_type` doit être fourni pour donner le contexte aux noms de champs. Le descripteur de message réel peut être recherché soit dans le pool de descripteurs liés, soit dans un nom de fichier fourni par l'appelant à l'aide de l'attribut `descriptor_source`.

Chaque tenseur de sortie est un tenseur dense. Cela signifie qu'il est rempli pour contenir le plus grand nombre d'éléments répétés vu dans le mini-lot d'entrée. (La forme est également rembourrée par un pour éviter les dimensions nulles). Le nombre réel de répétitions pour chaque exemple du mini-lot peut être trouvé dans la sortie « tailles ». Dans de nombreux cas, la sortie de `decode_proto` est immédiatement introduite dans tf.squeeze si les valeurs manquantes ne sont pas un problème. Lorsque vous utilisez tf.squeeze, transmettez toujours explicitement la dimension de compression pour éviter les surprises.

Pour l'essentiel, le mappage entre les types de champs Proto et les types TensorFlow est simple. Il existe cependant quelques cas particuliers :

- Un champ proto qui contient un sous-message ou un groupe ne peut être converti qu'en `DT_STRING` (le sous-message sérialisé). Il s'agit de réduire la complexité de l'API. La chaîne résultante peut être utilisée comme entrée dans une autre instance de l’opération decode_proto.

- TensorFlow ne prend pas en charge les entiers non signés. Les opérations représentent les types uint64 comme un « DT_INT64 » avec le même modèle de bits à complément à deux (de la manière la plus évidente). Les valeurs int32 non signées peuvent être représentées exactement en spécifiant le type `DT_INT64`, ou en utilisant un complément à deux si l'appelant spécifie `DT_INT32` dans l'attribut `output_types`.

Les proto-sérialisations binaires et texte sont prises en charge et peuvent être choisies à l'aide de l'attribut « format ».

L'attribut `descriptor_source` sélectionne la source des descripteurs de protocole à consulter lors de la recherche de `message_type`. Cela peut être:

- Une chaîne vide ou "local://", auquel cas des descripteurs de protocole sont créés pour les définitions de proto C++ (et non Python) liées au binaire.

- Un fichier, auquel cas les descripteurs de protocole sont créés à partir du fichier, qui est censé contenir un `FileDescriptorSet` sérialisé sous forme de chaîne. REMARQUE : Vous pouvez créer un fichier `descriptor_source` en utilisant les options `--descriptor_set_out` et `--include_imports` du compilateur de protocole `protoc`.

- Un "octets:// ", dans lequel les descripteurs de protocole sont créés à partir de ` `, qui devrait être un `FileDescriptorSet` sérialisé sous forme de chaîne.

Classes imbriquées

classe DecodeProto.Options Attributs facultatifs pour DecodeProto

Méthodes publiques

DecodeProto statique
créer ( Scope scope, Operand <String> bytes, String messageType, List<String> fieldNames, List<Class<?>> outputTypes, Options... options)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération DecodeProto.
DecodeProto.Options statique
descripteurSource (Chaîne descripteurSource)
DecodeProto.Options statique
messageFormat (Chaîne messageFormat)
DecodeProto.Options statique
assainir (assainir booléen)
Sortie <Entier>
tailles ()
Tenseur de int32 avec la forme `[batch_shape, len(field_names)]`.
Liste< Sortie <?>>
valeurs ()
Liste des tenseurs contenant les valeurs du champ correspondant.

Méthodes héritées

Méthodes publiques

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

Méthode d'usine pour créer une classe encapsulant une nouvelle opération DecodeProto.

Paramètres
portée portée actuelle
octets Tenseur de protos sérialisés de forme `batch_shape`.
type de message Nom du type de message proto à décoder.
noms de champs Liste de chaînes contenant les noms de champs de proto. Un champ d'extension peut être décodé en utilisant son nom complet, par exemple EXT_PACKAGE.EXT_FIELD_NAME.
Types de sortie Liste des types TF à utiliser pour le champ respectif dans field_names.
choix porte des valeurs d'attributs facultatifs
Retour
  • une nouvelle instance de DecodeProto

public statique DecodeProto.Options descriptorSource (String descriptorSource)

Paramètres
descripteurSource Soit la valeur spéciale « local:// » soit un chemin vers un fichier contenant un « FileDescriptorSet » sérialisé.

public statique DecodeProto.Options messageFormat (String messageFormat)

Paramètres
format du message Soit « binaire », soit « texte ».

public static DecodeProto.Options désinfecter (désinfecter booléen)

Paramètres
désinfecter S'il faut assainir le résultat ou non.

tailles de sortie publiques <Integer> ()

Tenseur de int32 avec la forme `[batch_shape, len(field_names)]`. Chaque entrée correspond au nombre de valeurs trouvées pour le champ correspondant. Les champs facultatifs peuvent avoir des valeurs 0 ou 1.

public List< Sortie <?>> valeurs ()

Liste des tenseurs contenant les valeurs du champ correspondant. `values[i]` a le type de données `output_types[i]` et la forme `[batch_shape, max(sizes[...,i])]`.