在预测期间从 Keras/Tensorflow 获得中间输出

get intermediate output from Keras/Tensorflow during prediction

假设我加载了 inception,我需要在分类之前提取最终描述符。 所以给出一个像这样的简单代码:

cnn = InceptionV3(weights='imagenet',
              include_top='False',
              pooling='avg')
cnn.predict(x, batch_size=32, verbose=0)

如何在预测过程中提取最后一层?

找出您需要获取结果的层的名称或索引,并根据该层的输出创建一个新模型。

只输出那个层的模型:

earlyPredictor = Model(cnn.inputs, cnn.layers[theIndexYouWant].outputs)

#alternatively
earlyPredictor = Model(cnn.inputs, cnn.get_layer(theNameYouWant).outputs)    

同时输出最终输出和所需层的模型:

fullPredictor = Model(cnn.inputs, [cnn.output, cnn.layers[index].output])  

使用 "output" 和 "outputs" 之间的区别仅在图层或模型具有多个输出时才会出现。如果 cnn 输出和特定层输出是多个,则第二个示例需要特别注意连接结果列表。