Es wird aus mehreren Gründen verwendet. Grundsätzlich wird es verwendet, um mehrere Netzwerke miteinander zu verbinden. Ein gutes Beispiel wäre, wenn Sie zwei Arten von Eingaben haben, zum Beispiel Tags und ein Bild. Sie könnten ein Netzwerk aufbauen, das zum Beispiel Folgendes hat:
BILD -> Conv -> Max Pooling -> Conv -> Max Pooling -> Dicht
TAG -> Einbetten -> Dichte Ebene
Um diese Netzwerke zu einer Vorhersage zu kombinieren und zusammen zu trainieren, können Sie diese dichten Schichten vor der endgültigen Klassifizierung zusammenführen.
Netzwerke, in denen Sie mehrere Eingänge haben, werden am offensichtlichsten verwendet. Hier ist ein Bild, das Wörter mit Bildern innerhalb eines RNN kombiniert. Im multimodalen Teil werden die beiden Eingänge zusammengeführt:
Ein weiteres Beispiel ist die Inception-Ebene von Google, in der Sie verschiedene Windungen haben, die wieder zusammengefügt werden, bevor Sie zur nächsten Ebene gelangen.
Um Keras mehrere Eingaben zuzuführen, können Sie eine Liste von Arrays übergeben. Im Wort- / Bildbeispiel hätten Sie zwei Listen:
x_input_image = [image1, image2, image3]
x_input_word = ['Feline', 'Dog', 'TV']
y_output = [1, 0, 0]
Dann können Sie wie folgt passen:
model.fit(x=[x_input_image, x_input_word], y=y_output]
model.fit()
sowohl X als auch y zum Anpassen akzeptiert undmodel
in diesem Fall kann es sich auch um ein "nicht zusammengeführtes" Modell handeln. Ziemlich ähnlich wie andere Modelltypen in Sklearn zum Beispiel.