É usado por várias razões, basicamente é usado para unir várias redes. Um bom exemplo seria onde você tem dois tipos de entrada, por exemplo, tags e uma imagem. Você pode construir uma rede que, por exemplo, tenha:
IMAGEM -> Conv -> Max Pooling -> Conv -> Max Pooling -> Denso
TAG -> Incorporação -> Camada densa
Para combinar essas redes em uma previsão e treiná-las, você pode mesclar essas camadas densas antes da classificação final.
Redes nas quais você tem várias entradas são o uso mais 'óbvio' delas, eis uma figura que combina palavras com imagens dentro de uma RNN; a parte multimodal é onde as duas entradas são mescladas:
Outro exemplo é a camada de criação do Google, na qual você tem diferentes convoluções que são adicionadas novamente antes de chegar à próxima camada.
Para alimentar várias entradas no Keras, você pode passar uma lista de matrizes. No exemplo da palavra / imagem, você teria duas listas:
x_input_image = [image1, image2, image3]
x_input_word = ['Feline', 'Dog', 'TV']
y_output = [1, 0, 0]
Em seguida, você pode ajustar da seguinte maneira:
model.fit(x=[x_input_image, x_input_word], y=y_output]
model.fit()
aceita X e y para montagem emodel
, neste caso, também pode ser um modelo "não mesclado". Praticamente como outros tipos de modelo no Sklearn, por exemplo.