在预测期间从 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 输出和特定层输出是多个,则第二个示例需要特别注意连接结果列表。
假设我加载了 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 输出和特定层输出是多个,则第二个示例需要特别注意连接结果列表。