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 on
Lesen 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:/