Увеличение данных в Keras: длина данных

Вопрос или проблема

Я запутался, когда добавляю аугментацию данных, должен ли я получить больше данных или те же данные? Я протестировал длину x_train, чтобы это подтвердить, но получил ту же длину до аугментации и после аугментации, это правильно или мне следует удвоить свои данные?

print(len(x_train)) вывод: 5484

после аугментации:

datagen = ImageDataGenerator(
        featurewise_center=True,  # устанавливаем среднее значение входа равным 0 по всему набору данных
        samplewise_center=True,  # устанавливаем среднее значение каждого примера равным 0
        featurewise_std_normalization=True,  # делим входные данные на стандартное отклонение набора данных
        samplewise_std_normalization=True,  # делим каждое входное значение на его стандартное отклонение
        zca_whitening=False,  # применяем ZCA нормализацию
        rotation_range=45,  # случайным образом поворачиваем изображения в диапазоне (градусы, от 0 до 180)
        zoom_range = 0.2, # Случайно масштабируем изображение 
        width_shift_range=0.2,  # случайным образом сдвигаем изображения по горизонтали (доля от общей ширины)
        height_shift_range=0.2,  # случайным образом сдвигаем изображения по вертикали (доля от общей высоты)
        horizontal_flip=True,  # случайным образом переворачиваем изображения
        vertical_flip=True,
        validation_split=0.2)  # случайным образом переворачиваем изображения
datagen.fit(x_train)
print(len(x_train)) вывод: 5484

Это хорошо или что мне следует делать, пожалуйста?

Немного запоздалый ответ, но это может помочь кому-то.

Вам не следует беспокоиться о длине данных после аугментации, поскольку Keras это делает, когда вы отправляете данные на обучение. Таким образом, фактическая длина данных не изменяется.

Ответ или решение

При использовании аугментации данных в Keras важно понимать, что длина ваших исходных данных (например, x_train) не изменяется. Это связано с тем, что аугментация выполняется "на лету" во время обучения модели, а не создает дополнительные копии ваших данных.

Вот подробное объяснение:

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

  2. Почему длина данных остается неизменной?
    После создания объекта ImageDataGenerator (как вы сделали с datagen) и применения метода fit, вы по-прежнему имеете те же 5484 образца в x_train. Это нормально, так как ImageDataGenerator будет динамически генерировать аугментированные данные в процессе обучения. Например, если вы передаете эти данные в метод fit или flow, Keras будет создавать новые аугментированные версии на лету, но общее количество образцов останется прежним.

  3. Как работать с аугментацией?
    Вы можете использовать метод flow или flow_from_directory для подачи данных в модель во время обучения. Например:

    model.fit(datagen.flow(x_train, y_train, batch_size=32), epochs=50)

    В этом случае на каждом шаге будет генерироваться новая выборка образцов с аугментацией.

  4. Нужно ли беспокоиться о длине данных?
    Нет, вам не нужно беспокоиться о том, чтобы количество образцов увеличивалось. Главная цель аугментации — это обогатить ваш набор данных за счет различных преобразований, что делается "на лету". Вы можете сосредоточиться на улучшении вашей модели, правильно выбирая параметры аугментации.

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

Оцените материал
Добавить комментарий

Капча загружается...