2 votes

Comment récupérer les données de la chaîne originale à partir de TFRecordData ?

J'ai suivi le guide de Tensorflow pour sauvegarder mes données de chaîne en utilisant :

def _create_string_feature(values):
    return tf.train.Feature(bytes_list=tf.train.BytesList(value=[values.encode('utf-8')]))

J'ai aussi utilisé ["tf.string", "FixedLenFeature"] comme type original de ma caractéristique, et "tf.string" comme mon type de conversion de caractéristiques.

Cependant, lors de ma formation, lorsque j'exécute ma session et que je crée des itérateurs, ma caractéristique de chaîne pour une taille de lot de 2 (par exemple : ['food fruit', 'cupcake food' ]) serait comme ci-dessous. Le problème est que cette liste est de taille 1, et non 2 (batch_size=2), pourquoi les instances d'un même lot restent-elles ensemble au lieu d'être divisées ?

[b'food fruit' b'cupcake food']

Pour mes autres caractéristiques qui sont des int ou des float, ce sont des tableaux bosselés de forme (batch_size, feature_len) qui sont bien mais je ne sais pas pourquoi les caractéristiques de type string ne sont pas séparées dans un seul lot ?

Toute aide serait appréciée.

1voto

Hephaestus Points 127

Cela permettra de convertir un BytesList ou bytes_list en une chaîne de caractères :

my_bytes_list_object.value[0].decode()

Ou, dans le cas où l'on extrait la chaîne de caractères d'un objet TFRecord Example :

my_example.features.feature['MyFeatureName'].bytes_list.value[0].decode()

De ce que je peux voir, bytes_list renvoie un BytesList à partir duquel nous pouvons lire l'objet value champ. Cela renverra un RepeatedScalarContainer qui fonctionne comme un simple list objet. En fait, si vous l'enveloppez avec la balise list() il le convertira en une liste. Cependant, nous pouvons y accéder comme s'il s'agissait d'une liste et utiliser la fonction [0] pour obtenir le troisième élément. L'élément retourné est un bytes qui peut être converti en un tableau standard str avec l'objet decode() méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X