代码
from keras.datasets import *
from keras.losses import categorical_crossentropy
from keras.datasets import *
from keras.layers import *
from keras.models import *
from keras.utils import to_categorical
import os
import cv2
def get_layer_features_with_index(net, weight_file, img, layer_index=None, layer_name=None):
'''
通过名称或者层索引来获得神经网络某一层的输出,name 和 index 只需要一个,另外一个设置为 None 即可
:param net: 想查看的网络模型
:param weight_file: 加载权重参数的路径
:param img: 输入用于观察的单张 img
:param layer_index: 想观察的层的索引
:param layer_name: 想观察的层的名称
:return: 对应层输出的矩阵
'''
print("getting the %s's feature" % layer_name if layer_name else layer_index.str)
if img.shape[0] != 1:
img = img.reshape((-1, *img.shape))
inputs = net.input
net.load_weights(weight_file)
if layer_index:
outputs = net.get_layer(index=layer_index).output
else:
outputs = net.get_layer(name=layer_name).output
model = Model(inputs, outputs)
model.compile("adam", categorical_crossentropy, metrics=["accuracy"])
output = model.predict(img)
return output
展示结果