Создание генератора данных с 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)