У меня большой набор данных. Данных около 100 тыс. Я дополнительно увеличил данные, используя ImageDataGenerator . Но это сильно замедляет тренировочный процесс. Без функции генератора изображений keras процесс обучения занял около 3 минут, но когда я использую функцию ImageDataGenerator, это заняло около 3 часов. Я использовал этот код для увеличения изображения. Как повысить производительность?
datagen = ImageDataGenerator(horizontal_flip=True,
vertical_flip=True,
featurewise_center=True,
featurewise_std_normalization=True,
zoom_range=0.2,
rotation_range=90.)
datagen.fit(data)
epochs = 50
model.fit_generator(datagen.flow(data, label, batch_size=128),
steps_per_epoch=patches.shape[0],
epochs=epochs)
Я заметил точно то же самое, используя RTX2060, каждая эпоха занимала 0,1 с с набором данных изображения, предварительно загруженным в массив np. Затем переход к ImageDataGenerator с увеличением каждой эпохи занимает 10 секунд. Я считаю, что это проблема Keras, и более эффективным способом является использование tf.data для создания конвейера, который может извлечь выгоду из параллельных вычислений, хотя я еще не пробовал (tensorflow.org/guide/data).