Создание генератора данных с tf.data.dataset для моделей последовательности

У меня есть набор данных изображений, включая изображения RGB: img1.png, img2.png ... img250.png. Я извлек 100 небольших участков размером [64,64,3] из каждого изображения. Итак, теперь у меня есть набор данных, например img1_1.png, img1_2.png ...img1_100.png, img2_1.png, img2_2.png, ... img2_100.png, img3_1, .....

Я хочу создать генератор данных с tf.data.dataset.from_tensor_slices для передачи всех патчей каждого изображения в модель RNN. Итак, я хочу, чтобы генератор создавал такие выходные данные: [batch_size, 100, 64, 64, 3]

Как я могу это сделать?

1 ответ

Код:

# 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)

Выход:

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

Убедитесь, что drop_remainders = True

Наконец, создайте размер партии желаемой длины.

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

Выход:

(2, 100, 64, 64, 3)

Если ваш размер данных (250,100,64, 64, 3):

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

Выход:

(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)