Я тренирую модель глубокого обучения с использованием маски RCNN из следующего git репозитория: Математический порт / Mask_RCNN. Я полагаюсь на значительное увеличение моего набора данных (исходный набор данных: 59 изображений 1988x1355x3 с каждыми> 80 аннотациями), которые я храню локально (необходимо для оценки типа / степени увеличения по сравнению с метриками проверки). Расширенный набор данных насчитывает 6000 изображений. Этот набор данных изменяется по размерам x и y изображения из-за уменьшения разрешения и аффинных преобразований - я предполагаю, что разные размеры x, y не повлияют на окончательные тесты.
Тем не менее, мое ядро Python вылетает всякий раз, когда я загружаю больше, чем 'X' изображений для обучения модели.
Следовательно, мне пришла в голову идея разбить набор данных на поднаборы данных. и итерацию по поднабору данных, используя «последние» обученные веса в качестве отправной точки для нового раунда. Но я не уверен, что результаты будут одинаковыми (читай: то же самое, учитывая стохастику c характер «стохасти c градиентный спуск»)?
Интересно, будут ли результаты одинаковыми, если я не буду перебирать поднаборы данных за эпоху, а обучать эпохи Y (например, 20 только для «голов», 10 для «всех слоев» ')?
Тем не менее, я уверен, что это не самый эффективный способ решения этой проблемы. Идеи по улучшению приветствуются.
Примечание , я не использую keras.preprocessing.image.ImageDataGenerator()
, как я понял, он случайным образом генерирует данные и передает их в модель, заменяя входные данные для эпоха, тогда как я хотел бы передать весь набор данных в модель.
Если мои спецификации мне пригодятся: Python 3.6, Tensorflow 1.9.0, Keras 2.2.4, CUDA 10.0, GPU Nvidia Geforce RTX 2060 Super (8 ГБ)