如何获得keras层';多输入模型中的输出?

如何获得keras层';多输入模型中的输出?,keras,keras-layer,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

当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."
我真的不确定输出是什么,因为模型有两个输入,image1和image2,当一个层返回其输出时,它对应的输入是什么?

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

唯一确定的事情是:

  • 输入层将匹配模型的输入(见1)
  • 输出层将匹配模型的输出(请参见1)
  • 但在这两者之间,任何事情都是可能的(见2)
(1) -但是,具有许多输入/输出的模型实际上具有许多“输入/输出层”。每个输出层都有一个输出。如果您检查“模型”输出,您有许多输出,但如果您检查“层”输出,则有多个输出层,每个层都有一个输出(仅在0处输出)。这同样适用于模型的输入层和输入层


(2) -尽管如此,最常见的选项是层只使用一次,因此只有“0处的输出”,而没有额外的输出

在keras中,如果您有一个模型:

  • 打印您的模型,您可以知道图层名称
  • 包装一个新模型
  • 获得输出

    from keras.models import Model
    print(<your_model>.summary())
    
    <new_model> = Model(inputs=<your_model>.input, outputs=<your_model>.get_layer('your layer_name').get_output_at(<index_number>))
    
    <your_output> = <new_model>.predict(<your_input>)
    
    来自keras.models导入模型
    打印(.summary())
    =模型(输入=.input,输出=.get_layer('your layer_name')。get_output_at())
    =.predict()