5

Ich möchte diese Funktion in TensorFlow verwenden, aber sie arbeitet mit 3D-Tensoren anstelle von 4D-Tensoren: Ich habe eine äußere Dimension von batch_size.TensorFlow "tf.image" -Funktionen in einem 4D Bildstapel

tf.image.random_flip_left_right(input_image_data) 

Das heißt, erwartet, dass diese Funktion einen Tensor (Bild) der Form:

(width, height, channels) 

Aber ich habe mehrere Bilder wie:

(batch_size, width, height, channels) 

Wie könnte ich die Zufalls Flip Karte Funktion für jedes Bild in meiner Batch-Größe und bekomme als Ausgabe einen Tensor mit der gleichen 4D Form, die ich bereits habe?

Meine Vermutung ist, dass es eine Umformung am Eingang der Funktion und eine Umformung nach der Funktion benötigen würde, aber ich bin mir nicht sicher, ob dies die Datenstruktur brechen und Bilder im Stapel zusammenfügen würde beim Anwenden der Spiegel. Darüber hinaus würde dieser Ansatz eine einzelne Randomisierung für den gesamten Stapel und nicht pro Bild durchführen.

Jeder Vorschlag geschätzt!

+0

Ich denke, diese Methoden wurden ursprünglich entwickelt, um mit Warteschlangen wie mit cifar10 Beispiel in Tensorflow Website zu verwenden. – jean

+0

[der Link] (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/image/cifar10/cifar10_input.py) – jean

+0

Danke, in der Tat habe ich schon angeschaut, aber ich möchte eine einfachere Pipeline für mein aktuelles Projekt zu verwenden. Es sollte eine Möglichkeit geben, sicher von 4D zu 3D zu gehen, um dann innerhalb des Tensorgraphen/Sitzung wieder zu 4D zu kombinieren. –

Antwort

0

Sie müssten etwas wie tf.pack und tf.unpack oder tf.gather und tf.concatenate verwenden, um von Ihrem 4D-Array in Ihr 3D-Array zu konvertieren.

Je nachdem, wie Sie Ihre Daten laden, können Sie die Verarbeitung in numpy durchführen. Eine andere Alternative besteht darin, jedes Bild zu verarbeiten, bevor Sie es in einen Stapel legen.

Lassen Sie mich wissen, wenn Sie eine Erklärung benötigen, wie tf.pack oder die anderen arbeiten.

Verwandte Themen