2017-05-10 3 views
0

Hi Ich versuche gerade Bilder variabler Breite mit Tensorflow zu stapeln. Zum Beispiel ich tun werde mit Bildern der Größe 50*245, 50*235, 50*265...and so onLesen und Batching Sequenzdaten in Tensorflow mit TFRokords

folgte ich eine grundlegende Pipeline, die ich online gefunden, zuerst ich meine Daten serialisiert werden und es in meinem tfrecord Datei schreiben tf.train.SequenceExample(). mit speichere ich verschiedene Breiten von Bildern, in meinem Fall 245, 235, 265 ...and so on und meine Pixeldaten unter Verwendung dieses Codes.

example=tf.train.SequenceExample() 

    #First we store our image width in 'input_length' feature 
    example.context.feature['input_length'].int64_list.value.append(sequence_length) 

    feature_input=example.feature_lists.feature_list['input'] 

    #Then we store pixel values in 'input' feature (our sequential data) 
    for pixel in image : 
     feature_input.feature.add().int64_list.value.append(pixel) 

    #write in the TFRecord file 
    writer.write(example.SerializeToString()) 

Dann öffnen wir unsere TFRecord Datei und geben Sie das Parsen unserer sequentiellen Daten

#Definition of data parsing 
context_features = { 
      'input_length':tf.FixedLenFeature([],dtype=tf.int64) 
} 
sequence_features = { 
      "input":tf.FixedLenSequenceFeature([50,],dtype=tf.int64,allow_missing=False), 

} 
#Now we parse the examples 
length_parsed,sequence_parsed=tf.parse_single_sequence_example(
    serialized=serialized_data, 
    context_features=context_features, 
    sequence_features=sequence_features 
) 


input_lengths,input_data=tf.train.batch(
    tensors=[length_parsed['input_length'],sequence_parsed['input']], 
    batch_size=1, 
    dynamic_pad=True  
) 

Das Problem ist, dass dynamische Polsterung scheint nicht i Tensoren Form (?,50) zu arbeiten, wenn ich dachte, ich würde bekomme Tensoren mit der Form des größten Tensors, der in den Stapel eingegeben wurde, vielleicht (265,50) .... Hat jemand eine Ahnung, was ich falsch mache oder dass ich nicht für den Batch-Prozess oder einen der oben genannten Prozesse spezifiziere? Seit 5 Tagen fest auf diesem fest:/

Antwort

0

Ich fand die Lösung ... vor allem ich als nur eindeutige Ganzzahlen zu meinen Feature-Listen anstelle von "Listen von ganzen Zahlen" zu meinem Beispiel. Also verstand das Skript nicht, warum ich plötzlich nach 50 Komponentenvektoren suchte.