在 keras 中训练一个包含 2 个堆叠模型的模型
Train a model with 2 stacked models in it keras
我有以下想要训练的模型(见下图):
模型输入20,模型A输入10(初始输入的前10个元素),模型B输入10(初始输入的后10个元素)最后,模型 C 的输入是模型 A 和 B 的输出的串联。
如何在 Keras 中同时训练这 3 个模型?我可以将它合并到一个大模型中吗? (我只有训练大模型的数据)
Can I merge it in one big model?
是的!
How can I train this 3 models at the same time in Keras?
我给大家指点一下:
- 使用函数式 API。想知道它与顺序有何不同?看here
- 使用连接层 - Reference
假设您定义了三个模型,并将其命名为 model_A、model_B 和 model_C。您现在可以像这样定义完整的模型(我没有检查确切的代码):
def complete_model(model_A, model_B, model_C):
input_1 = layers.Input(shape=(10,))
input_2 = layers.Input(shape=(10,))
model_A_output = model_A(input_1)
model_B_output = model_B(input_2)
concatenated = tf.concat([model_A_output, model_B_output], axis=-1)
model_C_output = model_C(concatenated)
model = Model(inputs=[input_1, input_2], outputs=model_C_output)
model.compile(loss=losses.MSE)
model.summary()
return model
这需要你提供二维输入,所以你必须做一些 numpy 切片来预处理你的输入。
如果您仍然想要一维输入,您可以只定义一个形状为 (20,) 的输入层,然后使用 tf.split 函数将其分成两半并将其馈送到下一个网络。
我有以下想要训练的模型(见下图):
模型输入20,模型A输入10(初始输入的前10个元素),模型B输入10(初始输入的后10个元素)最后,模型 C 的输入是模型 A 和 B 的输出的串联。
如何在 Keras 中同时训练这 3 个模型?我可以将它合并到一个大模型中吗? (我只有训练大模型的数据)
Can I merge it in one big model?
是的!
How can I train this 3 models at the same time in Keras?
我给大家指点一下:
- 使用函数式 API。想知道它与顺序有何不同?看here
- 使用连接层 - Reference
假设您定义了三个模型,并将其命名为 model_A、model_B 和 model_C。您现在可以像这样定义完整的模型(我没有检查确切的代码):
def complete_model(model_A, model_B, model_C):
input_1 = layers.Input(shape=(10,))
input_2 = layers.Input(shape=(10,))
model_A_output = model_A(input_1)
model_B_output = model_B(input_2)
concatenated = tf.concat([model_A_output, model_B_output], axis=-1)
model_C_output = model_C(concatenated)
model = Model(inputs=[input_1, input_2], outputs=model_C_output)
model.compile(loss=losses.MSE)
model.summary()
return model
这需要你提供二维输入,所以你必须做一些 numpy 切片来预处理你的输入。
如果您仍然想要一维输入,您可以只定义一个形状为 (20,) 的输入层,然后使用 tf.split 函数将其分成两半并将其馈送到下一个网络。