如何在多输入模型中获得keras图层的输出?

时间:2017-06-19 12:33:00

标签: keras keras-layer

当Keras模型接受多个输入时,其图层的行为就像只有一个输入。这可能是一个错误。

model = vgg19.VGG19(weights='imagenet', include_top=False, pooling='avg')
model(image1)
model(image2)

model.get_output_at(0)
model.get_output_at(1)
#no error here

outputs_0 = [layer.get_output_at(0) for layer in model.layers]
#no error here

outputs_1 = [layer.get_output_at(1) for layer in model.layers]
#error "Asked to get output at node 1, but the layer has only 1 inbound nodes."

我真的不确定什么是outputs_0,因为模型有两个输入,image1和image2,当一个图层返回它的输出时,它的相应输入是什么?

2 个答案:

答案 0 :(得分:2)

在喀拉拉邦,如果您有一个模型:。

  1. 打印模型,您可以知道图层名称;
  2. 包装新模型;
  3. 获取输出;

    python -m pip install pytest

答案 1 :(得分:0)

无论模型的输入和输出如何,都没有关于图层的行为的规则。模型可能具有许多内部分支并且重用(或不重用)具有不同输入的相同层,从而产生不同的输出。一个图层只有"输出1(或更多)"如果该层被多次使用。

唯一确定的事情是:

  • 输入图层将匹配模型的输入(参见1),
  • 并且输出图层将匹配模型的输出(参见1)。
  • 但两者之间的任何事都有可能(见2)。

(1) - 但是,具有许多输入/输出的模型实际上具有许多"输入/输出层"。每个输出层都有一个输出。如果你检查"模型"输出,你有很多,但如果你检查"层"输出,然后有几个输出层,每个输出层都有一个输出(仅输出0)。这同样适用于模型的输入与输入层。

(2) - 尽管如此,最常见的选择是只使用一次图层,因此只有"输出为0"而没有额外的输出。