Wie erstelle ich gepolsterte Stapel in Tensorflow für tf.train.SequenceExample-Daten mit der DataSet-API?

8

Zum Trainieren eines LSTM-Modells in Tensorflow habe ich meine Daten in einem tf.train.SequenceExample -Format strukturiert und in einem TFRecord-Datei Ich möchte jetzt die neue DataSet-API verwenden, um gepolsterte Stapel für das Training zu erstellen . In der Dokumentation gibt es ein Beispiel für die Verwendung von "padded_batch", aber für meine Daten kann ich nicht herausfinden, welchen Wert padded_shapes sollte sein.

Zum Lesen der TFrecord-Datei in die Stapel habe ich den folgenden Python-Code geschrieben:

%Vor%

Der Code funktioniert gut, wenn ich dataset = dataset.batch(1) verwende (in diesem Fall ist kein Padding erforderlich), aber wenn ich die padded_batch Variante verwende, erhalte ich den folgenden Fehler:

  

TypeError: Wenn flache Struktur eine Sequenz ist, muss Eingabe auch a sein   Sequenz. Eingabe hat den Typ:.

Können Sie mir helfen herauszufinden, was ich für den Parameter padded_shapes übergeben soll?

(Ich weiß, dass es eine Menge Beispielcode gibt, der Threading und Warteschlangen dafür verwendet, aber ich würde lieber die neue DataSet-API für dieses Projekt verwenden)

    
Marijn Huijbregts 30.08.2017, 08:12
quelle

2 Antworten

6

Sie müssen ein Tupel von Formen übergeben. In Ihrem Fall sollten Sie

übergeben %Vor%

oder versuchen

%Vor%

Weitere Informationen finden Sie in diesem Code . Ich musste diese Methode debuggen, um herauszufinden, warum es für mich nicht funktionierte.

    
Zaher Wanli 30.08.2017, 09:32
quelle
0

Wenn Ihr aktuelles Objekt Dataset ein Tupel enthält, können Sie auch die Form jedes gepolsterten Elements angeben.

Zum Beispiel habe ich einen (same_sized_images, Labels) -Datensatz und jedes Label hat eine andere Länge, aber denselben Rang.

%Vor%     
Dat Nguyen 01.01.2018 23:41
quelle