Он используется по нескольким причинам, в основном он используется для объединения нескольких сетей. Хорошим примером будет то, где у вас есть два типа ввода, например, теги и изображение. Вы можете построить сеть, которая, например, имеет:
ИЗОБРАЖЕНИЕ -> Conv -> Max Pooling -> Conv -> Max Pooling -> Плотный
TAG -> Встраивание -> Плотный слой
Чтобы объединить эти сети в одно предсказание и обучить их вместе, вы можете объединить эти плотные слои перед окончательной классификацией.
Сети, в которых у вас есть несколько входов, являются наиболее «очевидным» их использованием. Вот картинка, которая объединяет слова с изображениями внутри RNN, мультимодальная часть - это место, где объединяются два входа:
Другим примером является начальный уровень Google, где у вас есть различные свертки, которые складываются вместе перед переходом на следующий уровень.
Для подачи нескольких входов в Keras вы можете передать список массивов. В примере слова / изображения у вас будет два списка:
x_input_image = [image1, image2, image3]
x_input_word = ['Feline', 'Dog', 'TV']
y_output = [1, 0, 0]
Тогда вы можете соответствовать следующим образом:
model.fit(x=[x_input_image, x_input_word], y=y_output]
model.fit()
для подгонки принимаются X и y, иmodel
в этом случае модель также может быть «не слитой». Очень похоже на другие модели моделей в Sklearn, например.