首页 > 解决方案 > 使用内部层的输出来拟合 Keras 模型?

问题描述

我有一个模型 M,它有两个输入:x_train1、x_train2。在经过大量的转换之后,这些输入被连接到一个单独的数组 x1_x2 中。稍后将其插入自动编码器,其中输出应为 x1_x2。但是当我尝试拟合模型时,出现以下错误:

ValueError:将符号张量提供给模型时,我们希望张量具有静态批量大小。得到具有形状的张量:(无,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)的内部层的输出?

标签: pythonmachine-learningkerasautoencodertransfer-learning

解决方案


我会做以下事情:Model从 Keras 导入类并创建一个附加模型。

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
)

就是这样,现在您可以使用新模型并对其进行训练。


推荐阅读