Присоединение к нескольким моделям Keras - PullRequest
0 голосов

Я пытаюсь реплицировать сеть, описанную по этой ссылке: https://arxiv.org/pdf/1806.07492.pdf. До сих пор мне удалось воспроизвести патч-сети модели, так что теперь у меня есть 9 моделей входного размера (32,32,3) каждая.

Однако следующий шаг - объединить эти 9 модели в единую, чтобы получить единую (96,96,3) входную сеть. Идея состоит в том, что из 27 нейронов первого слоя первые 3 соответствуют предварительно обученной модели первого патча и так далее. Вот изображение того, как это должно получиться (каждая цветная строка - это другая модель): Окончательная объединенная модель

На этом изображении каждая строка перед полностью подключенным слоем представляет предварительно обученный модель со следующими характеристиками: (32,32,3) архитектура

Как видите, эта сеть анализирует изображения (32,32,3). Однако полная модель должна соответствовать этой структуре, которая использует модель (96,96,3): (96,96,3) архитектура

У меня уже есть (32,32 , 3) модели в их соответствующем файле hdf5, но я не знаю, как объединить их в одну модель, чтобы получить модель размера (96,96,3). Я попытался использовать функцию concatenate Keras, но получил сообщение об ошибке, в котором говорилось, что мои входные данные должны быть тензорами.

Вот код, который я использовал:

in1 = Input(shape=(32,32,3))

model_patch1 = load_model('patch1.hdf5')

in2 = Input(shape=(32,32,3))

model_patch2 = load_model('patch2.hdf5')

in3 = Input(shape=(32,32,3))

model_patch3 = load_model('patch3.hdf5')

in4 = Input(shape=(32,32,3))

model_patch4 = load_model('patch4.hdf5')

in5 = Input(shape=(32,32,3))

model_patch5 = load_model('patch5.hdf5')

in6 = Input(shape=(32,32,3))

model_patch6 = load_model('patch6.hdf5')

in7 = Input(shape=(32,32,3))

model_patch7 = load_model('patch7.hdf5')

in8 = Input(shape=(32,32,3))

model_patch8 = load_model('patch8.hdf5')

in9 = Input(shape=(32,32,3))

model_patch9 = load_model('patch9.hdf5')

model_final_concat = Concatenate(axis=-1)([model_patch1, model_patch2,
    model_patch3, model_patch4, model_patch5, model_patch6, model_patch7, 
    model_patch8, model_patch9])

model_final_dense_1 = Dense(1, activation='sigmoid')(model_final_concat)

lsCnn_faces = Model(inputs=[in1,in2,in3,in4,in5,in6,in7,in8,in9],
                    outputs=model_final_dense_1) lsCnn_faces.summary()

Any помощь будет очень признательна.

...