Erstellen Sie mit tf.data.dataset einen Datengenerator für Sequenzmodelle

Aug 30 2020

Ich habe einen Bilddatensatz mit RGB-Bildern: img1.png, img2.png ... img250.png. Ich habe 100 kleine Patches mit der Größe [64,64,3] aus jedem Bild extrahiert. Also, ich habe jetzt einen Datensatz wie img1_1.png, img1_2.png ... img1_100.png, img2_1.png, img2_2.png, ... img2_100.png, img3_1, .....

Ich möchte einen Datengenerator mit tf.data.dataset.from_tensor_slices erstellen, um alle Patches jedes Bildes an ein RNN-Modell zu übergeben. Ich möchte also, dass der Generator eine Ausgabe wie folgt erstellt: [batch_size, 100, 64, 64, 3]

Wie kann ich das machen?

Antworten

1 AniketBote Aug 30 2020 at 08:32

Code:

# generating data
x = tf.constant(np.random.randint(256, size =(250,64, 64, 3)), dtype = tf.int32)

# Creating a dataset with sequence length
dataset = tf.data.Dataset.from_tensor_slices(x).batch(100, drop_remainder= True)
for i in dataset:
    print(i.shape)

Ausgabe:

(100, 64, 64, 3)
(100, 64, 64, 3)

Stellen Sie sicher, dass drop_remainders = True

Erstellen Sie schließlich eine Stapelgröße mit der gewünschten Länge.

# creating dataset with batch_size
dataset = dataset.batch(32)
for i in dataset:
    print(i.shape)

Ausgabe:

(2, 100, 64, 64, 3)

Wenn Ihre Datengröße (250, 100, 64, 64, 3) beträgt:

dataset = tf.data.Dataset.from_tensor_slices(x).batch(32)
for i in dataset:
    print(i.shape)

Ausgabe:

(32, 100, 64, 64, 3)
(32, 100, 64, 64, 3)
(32, 100, 64, 64, 3)
(32, 100, 64, 64, 3)
(32, 100, 64, 64, 3)
(32, 100, 64, 64, 3)
(32, 100, 64, 64, 3)
(26, 100, 64, 64, 3)