传递图像后如何打印CNN模型每一层的输出

时间:2019-02-11 14:11:23

标签: machine-learning keras neural-network deep-learning

我有CN​​N模型的代码。但是,我需要模型每一层的输出,并且在编译模型之后通过测试图像。因此,有一种方法可以通过将测试图像作为输入来查看CNN模型每一层的输出。

classifier = Sequential()
classifier.add(Convolution2D(32,3,3, input_shape = (64,64,3),activation = 
"relu"))
classifier.add(MaxPooling2D(pool_size = (2,2)))
classifier.add(Convolution2D(64,3,3,activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2,2)))
classifier.add(Flatten())

我的测试功能是这样:

import numpy as np
from keras.preprocessing import image
test_image = image.load_img('spot.png',target_size = (64,64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image,axis = 0)
result = classifier.predict(test_image)
training_set.class_indices
if result [0][0] == 0:
    prediction = 'mango_powder'  
else:
    prediction = 'mango_spot'
print(prediction)

1 个答案:

答案 0 :(得分:1)

制作一个可输出所有图层的模型:

inputs = classifier.input
outputs = [classifier.layers[i].output for i in range(len(classifier.layers))]
model = Model(inputs, outputs)

使用此模型来预测与classifier中将使用的输入相同的输入:

all_layers_predictions = model.predict(images)

在这里,all_layers_predictions将是一个列表,其中包含每一层的输出。

如果输入层出现在i = 0中,您可能需要忽略第一层(classifier.summary()