Il est utilisé pour plusieurs raisons, fondamentalement, il est utilisé pour relier plusieurs réseaux ensemble. Un bon exemple serait où vous avez deux types d'entrée, par exemple des balises et une image. Vous pouvez construire un réseau qui a par exemple:
IMAGE -> Conv -> Max Pooling -> Conv -> Max Pooling -> Dense
TAG -> Incorporation -> Couche dense
Pour combiner ces réseaux en une seule prédiction et les former ensemble, vous pouvez fusionner ces couches denses avant la classification finale.
Les réseaux où vous avez plusieurs entrées en sont l'utilisation la plus 'évidente', voici une image qui combine des mots avec des images à l'intérieur d'un RNN, la partie multimodale est l'endroit où les deux entrées sont fusionnées:
Un autre exemple est la couche Inception de Google où vous avez différentes convolutions qui sont ajoutées ensemble avant de passer à la couche suivante.
Pour alimenter plusieurs entrées vers Keras, vous pouvez passer une liste de tableaux. Dans l'exemple mot / image, vous auriez deux listes:
x_input_image = [image1, image2, image3]
x_input_word = ['Feline', 'Dog', 'TV']
y_output = [1, 0, 0]
Ensuite, vous pouvez adapter comme suit:
model.fit(x=[x_input_image, x_input_word], y=y_output]
model.fit()
accepte à la fois X et y pour l'ajustement etmodel
dans ce cas peut être aussi un modèle "non fusionné". Un peu comme les autres types de modèles dans Sklearn par exemple.