如何在Keras中连接两个神经网络

时间:2019-01-11 17:58:38

标签: keras neural-network deep-learning artificial-intelligence

我对Keras和深度神经网络有疑问。我不知道是否可能。

结构: “神经网络1”获得输入“ Input1”,并计算输出“输出1”。 “神经网络2”的输入是“输出1”和“输入1”。

能否请您告诉我这是否可行,以及我如何用Kers建立这样的神经网络? 谢谢

1 个答案:

答案 0 :(得分:0)

这可以通过使用Concatenate层和Model来实现:

input_1 = Input(shape=(10,))
output_1 = Dense(1)(input_1)
input_2 = Input(shape=(5,))
concat_2 = Concatenate()([output_1, input_2])
output_2 = Dense(1)(concat_2)
model = Model(inputs=[input_1, input_2], outputs=[output_2])

完整示例:

from tensorflow.keras.layers import Concatenate, Dense, Input
from tensorflow.keras.models import Model

import numpy as np

x1 = np.random.normal(size=(1000, 10))
x2 = np.random.normal(size=(1000, 5))
y = (
    x1.mean(axis=-1, keepdims=True)
    + x2.mean(axis=-1, keepdims=True)
    + np.random.normal(scale=0.05, size=(1000, 1))
)

input_1 = Input(shape=(10,))
output_1 = Dense(1)(input_1)
input_2 = Input(shape=(5,))
concat_2 = Concatenate()([output_1, input_2])
output_2 = Dense(1)(concat_2)
model = Model(inputs=[input_1, input_2], outputs=[output_2])

model.compile(loss='mse', optimizer='sgd')
hist = model.fit([x1, x2], y, epochs=500)