Как переобучить модель, не теряя более ранние данные модели с новым набором данных - PullRequest
0 голосов
/ 22 сентября 2019

для моего текущего требования, у меня есть набор данных из 10 000+ лиц от 100 разных людей, из которых я обучил модель распознавания лица (лиц).Модель была обучена путем получения 128 векторов из модели facenet_keras.h5 и передачи этих векторных значений в слой Dense для классификации граней.Но проблема, с которой я сталкиваюсь в настоящее время:

  1. , если я хочу тренировать лицо одного человека, мне нужно заново переучить всю модель.

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

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

С помощью трансферного обучения вы должны скопировать существующую предварительно обученную модель и использовать ее для другого, но похожего набора данных из исходного.В вашем случае это будет то, что вам нужно сделать, если вы хотите обучить модель распознавать ваших конкретных 100 человек.

Если вы уже сделали это и хотите добавить еще одного человека в базу данных без необходимости переподготовкиполная модель, тогда я бы заморозил все слои (установите layer.trainable = False для всех слоев), за исключением последнего полностью связанного слоя (или нескольких последних слоев).Затем я бы заменил последний слой (который имел 100 узлов) на слой с 101 узлом.Вы можете даже скопировать веса в первые 100 узлов и, возможно, заморозить их (я не уверен, возможно ли это в Керасе).В этом случае вы бы повторно использовали все обученные сверточные слои и т. Д. И научили модель распознавать это новое лицо.

0 голосов
/ 22 сентября 2019

Вы можете сохранить результаты тренировок, сохранив свои веса с помощью:

model.save_weights('my_model_weights.h5')

и загрузите их позже, чтобы возобновить тренировку после добавления нового изображения в набор данных с помощью:

model.load_weights('my_model_weights.h5')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...