Найти в Дзене
ЦифроПроф

Аугментации в Keras

Аугментация в Keras — это метод увеличения размера обучающих данных путём преобразования уже имеющихся. Он позволяет расширить обучающий датасет и внести в него разнородность, что уменьшает склонность модели к переобучению. Для автоматической аугментации в Keras используется класс ImageDataGenerator. Он принимает исходные обучающие данные, преобразует их и возвращает только преобразованные данные для обучения модели. Задача Выполните аугментацию обучающей выборки (train_datagen). Примените к ней такие операции: Создайте генератор для валидационной выборки (validation_datagen). from tensorflow.keras.preprocessing.image import ImageDataGenerator import matplotlib.pyplot as plt # вместо одного генератора сделайте два: train_datagen и validation_datagen datagen = ImageDataGenerator(validation_split=0.25, rescale=1/255.) train_datagen=ImageDataGenerator( validation_split=0.25, rescale=1./255, horizontal_flip=True, vertical_flip=True, rotation_range=90, width_shift_range=0.2, # сдвиг
Фото из открытых источников
Фото из открытых источников

Аугментация в Keras — это метод увеличения размера обучающих данных путём преобразования уже имеющихся. Он позволяет расширить обучающий датасет и внести в него разнородность, что уменьшает склонность модели к переобучению.

Для автоматической аугментации в Keras используется класс ImageDataGenerator. Он принимает исходные обучающие данные, преобразует их и возвращает только преобразованные данные для обучения модели.

Задача

Выполните аугментацию обучающей выборки (train_datagen).

Примените к ней такие операции:

  • Отражения по вертикали и горизонтали,
  • Повороты до 90 градусов,
  • Сдвиги изображения по вертикали и горизонтали на 20% от исходного размера.

Создайте генератор для валидационной выборки (validation_datagen).

from tensorflow.keras.preprocessing.image import ImageDataGenerator

import matplotlib.pyplot as plt

# вместо одного генератора сделайте два: train_datagen и validation_datagen

datagen = ImageDataGenerator(validation_split=0.25, rescale=1/255.)

train_datagen=ImageDataGenerator(

validation_split=0.25,

rescale=1./255,

horizontal_flip=True,

vertical_flip=True,

rotation_range=90,

width_shift_range=0.2, # сдвиг по горизонтали на 20% от исходного размера

height_shift_range=0.2)

validation_datagen=ImageDataGenerator(

validation_split=0.25,

rescale=1./255)

train_datagen_flow = datagen.flow_from_directory(

'/datasets/fruits_small/',

target_size=(150, 150),

batch_size=16,

class_mode='sparse',

subset='training',

seed=12345)

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