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

时间:2019-02-18 01:54:29

标签: python machine-learning keras autoencoder transfer-learning

我有一个模型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)的内部层的输出?

1 个答案:

答案 0 :(得分:1)

我将执行以下操作:从Keras导入Model类并创建其他模型。

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
)

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