Ансамблирование моделей с разными входами - PullRequest
0 голосов
/ 26 февраля 2019

Я создал 3 простых не очень глубоких модели (может быть, глубже, как мне нравится) и обучил их 3 отдельным входам.Для ясности, первый ввод - это изображение лица, второй - глаза, а третий - рот (для распознавания выражения лица).Я хотел бы объединить модель, которую я использую с 3 входами (с одинаковой меткой класса ofc), и получить один выходной ярлык.Мотивация состоит в том, что 90% точные модели могут работать лучше, когда объединены вместе.Это должно выглядеть так:

Facial input-----------Eyes Input------------Mouth Input
 (100x100x1)          (100x100x1)          (100x100x1) 
     |                     |                     | 

   .....                 ......                .....

     |                     |                     |
      ___________________________________________
                 Some concatenation over here
                           |
                   | Output Label|    

Или я должен полностью забыть это;Получите отклик нижних Dense слоев каждой модели после теста и объедините их с вектором признаков и классифицируйте.Непонятно здесь ...

1 Ответ

0 голосов
/ 26 февраля 2019

Предположим, ваши модели называются model1, model2 и model3.Вы можете использовать функциональный API для объединения ваших моделей следующим образом:

input1 = model1.input
input2 = model2.input
input3 = model3.input

m1 = model1(input1)
m2 = model2(input2)
m3 = model3(input3)

output = concatenate([m1, m2, m3]) # this is the concatenation
output = Dense(10)(output) # just an example for what you could add to the model
output = Activation('softmax')(output)

model = Model(inputs=[input1,input2,input3], outputs=output)

model затем можно обучить, и он обучит все три модели одновременно.Если вы хотите тренировать только часть модели поверх трех моделей, вы можете использовать параметр trainable.

...