使用内部层的输出来拟合 Keras 模型?

Using the output of an internal layer to fit Keras model?

我有一个模型 M,它有两个输入:x_train1、x_train2。经过大量转换后,这些输入被连接成一个数组 x1_x2。后来它被插入一个自动编码器,输出应该是 x1_x2。但是当我尝试拟合模型时,出现以下错误:

ValueError:将符号张量输入模型时,我们希望张量具有静态批量大小。得到形状为:(None, 2080)

的张量

我知道问题在于我如何指定我的预期输出。我能够使用虚拟数组 运行 代码,例如 np.zeros((96, 2080)),但不能通过设置内部层的输出。

我执行以下操作来拟合模型:

autoencoder.fit([x_train1, x_train2], 
                autoencoder.layers[-7].output,
                epochs=50,
                batch_size=8,
                shuffle=True,
                validation_split=0.2)

如何让 Keras 理解预期输出应该是形状为 (number_of_input_images, 2080) 的内部层的输出?

我会执行以下操作:从 Keras 导入 Model class 并创建一个额外的模型。

from tensorflow.python.keras.models import Model

# model = your existing model

new_model = Model(
  inputs = model.input,
  outputs = model.get_layer(name_of_desired_output_layer).output
)

就是这样,现在您可以使用您的新模型来训练它了。