针对于图像来说,训练好一个模型后,需要比较特征差异或者做分析的时候,需要将模型进行可视化,这样能够无更加直观的分析深度学习中特征的变化。能够与其他网络提取的特征进行观察,分析差异。
代码:
import cv2
from pylab import *
import matplotlib.pyplot as plt
from keras import backend as K
from keras.models import load_model
import tensorflow as tf
# 加载训练好的模型
model = load_model(r"..\vgg16.h")
model.summary() # 打印模型.查看参数及层的名称
# 设置为测试阶段
K.set_learning_phase(0)
graph = tf.get_default_graph()
test_path = r"../dog.jpg"
image = cv2.imread(test_path )
image = cv2.resize(image ,(224,224))
image = image .astype('float')/255.0
image = np.expand_dims(image ,0)
def get_layer_feature(img, model, layer_name):
with graph.as_default():
layer_fn = K.function([model.get_input_at(0)],[model.get_layer(layer_name).output])
layer_output = layer_fn([img, 0])[0]
return layer_output
layer_output = get_layer_feature(image , model, 'conv2d_3')