使用keras作为后端获取中间层的输出

时间:2019-01-18 20:11:31

标签: python function tensorflow keras

我想提取模型的四个中间层。这是我设置功能的方法:

K.function([yolo_model.layers[0].input, yolo_model.layers[4].input, K.learning_phase()],
                                 [yolo_model.layers[1].layers[17].output,
                                  yolo_model.layers[1].layers[27].output,
                                  yolo_model.layers[1].layers[43].output,
                                  yolo_model.layers[1].layers[69].output])

我总是得到tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'input_3' with dtype float and shape [?,416,416,3]的错误 看来我的输入有尺寸或类型错误,但我将此输入用于模型train_on_batch或预测,并且可以正常工作。即使将np.zeros((1,416,416,3))传递给它,我也遇到同样的错误。另一件事是我没有input_3,因为我的模型仅接受两个输入。我不知道input_3张量来自哪里。

如果有人能给我一些提示,请先感谢。

1 个答案:

答案 0 :(得分:1)

我发现问题出在哪里。我的模型由一个内部模型和多层组成。构建函数时,我的输入来自外部模型,但输出来自内部模型,这导致输入和输出之间的断开。我只是将原始输入更改为内部模型的输入层,即可使用。