【问题标题】:How to get keras layer's output in a multiple-input model?如何在多输入模型中获取 keras 层的输出?
【发布时间】:2017-11-21 16:14:26
【问题描述】:

当 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,当一个层返回它的输出时,它对应的输入是什么?

【问题讨论】:

    标签: keras keras-layer


    【解决方案1】:

    在 keras 中,如果你有模型:.

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

      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>)
      

    【讨论】:

      【解决方案2】:

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

      唯一确定的是:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-05-25
        • 1970-01-01
        • 2022-12-24
        • 2021-06-18
        • 2019-10-08
        • 1970-01-01
        • 2019-01-27
        • 1970-01-01
        • 2020-08-09
        相关资源
        最近更新 更多