如何在keras中间层的结果之间进行一些计算

How to do some calculation between the results from the middle layers in keras

如果我构建的 keras 神经网络模型看起来像:

模型 1:输入 -> layer1

模型2:输入->layer1->layer2->运算->layer3->输出

我想在 model1 的 layer1 的结果和 model2 的 layer2 的结果之间做一些计算,我该怎么做?我尝试使用一些 Tensorflow 代码进行计算但失败了。有什么方法可以实现我的目标吗?

您可以使用 Keras functional API 来达到这个目的:

from keras import layers
from keras import models

# define model 1 architecture
m1_input = layers.Input(shape=('arbitrary shape'))
m1_layer1 = layers.SomeLayer()(m1_input)

# define model 2 architecture
m2_input = layers.Input(shape=('arbitrary shape'))
m2_layer1 = layers.SomeLayer()(m2_input)
m2_layer2 = layers.SomeLayer()(m2_layer1)
merge_m1 = layers.Lambda(SomeOperation)([m1_layer1, m2_layer2])
m2_layer3 = layers.SomeLayer()(merge_m1)
m2_output = layers.SomeLayer()(m2_layer3)

# define the final model
model = models.Model(inputs=[m1_input, m2_input], outputs=[m2_output])

在上面的代码中,SomeOperation应该是一个函数。查看 documentation for more information about Lambda layer in Keras. Alternatively, Keras has some simple built-in merge layers,例如 addconcatenate,您可以使用它们代替 Lambda 层。