Выполните аугментацию обучающей выборки (train_datagen).
Примените к ней такие операции:
- Отражения по вертикали и горизонтали,
- Повороты до 90 градусов,
- Сдвиги изображения по вертикали и горизонтали на 20% от исходного размера.
Создайте генератор для валидационной выборки (validation_datagen). Выведите на экран изображения из первого батча обучающей выборки. Код компактного вывода 16 изображений уже в прекоде.
Подсказка
Аргументы, отвечающие за аугментацию:
- Отражения:
horizontal_flipиvertical_flip, - Повороты:
rotation_range(англ. «диапазон вращения»), - Сдвиги:
width_shift_range(англ. «диапазон сдвига по ширине») иheight_shift_range(англ. «диапазон сдвига по высоте»).
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
# вместо одного генератора сделайте два: train_datagen и validation_datagen
train_datagen = ImageDataGenerator(
validation_split=0.25,
rescale=1./255,
horizontal_flip=True,
vertical_flip=True,
rotation_range=90,
width_shift_range=0.2,
height_shift_range=0.2)
validation_datagen = ImageDataGenerator(
validation_split=0.25,
rescale=1./255)
train_datagen_flow = train_datagen.flow_from_directory(
'/datasets/fruits_small/',
target_size=(150, 150),
batch_size=16,
class_mode='sparse',
subset='training',
seed=12345)
val_datagen_flow = validation_datagen.flow_from_directory(
'/datasets/fruits_small/',
target_size=(150, 150),
batch_size=16,
class_mode='sparse',
subset='validation',
seed=12345)
features, target = next(train_datagen_flow)
# выводим 16 изображений
fig = plt.figure(figsize=(10,10))
for i in range(16):
fig.add_subplot(4, 4, i+1)
plt.imshow(features[i])
# для компактности удаляем оси и прижимаем изображения друг к другу
plt.xticks([])
plt.yticks([])
plt.tight_layout()