Erstellen Sie mit tf.data.dataset einen Datengenerator für Sequenzmodelle
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
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)