我们知道,CNN由通道channel以及与通道相连的filter组成,我们可以可视化的内容就有这二者,
其一,是卷积神经网络的中间输出,帮助我们了解层是如何对输入进行变换的。
其二,是卷积神经网络的过滤器,帮助我们精确理解卷积神经网络中每个过滤器最容易接受的视觉模式。(即使得过滤器所有元素值最大的输入)
此外,还有类激活的热力图,帮助我们理解哪个部分被识别属于某个类别,从而定位图像中的物体。
1.可视化中间输出
即将神经网络中间的卷积层或池化层后的结果展示出来,通过这一步可以看到神经网络对于原图所作的变化。
首先,我们载入某一个使用卷积神经网络的模型
from tensorflow.keras import models
model = models.load_model('dogs_vs_cats_small_without_data_increase.h5')
然后我们载入一张图片
from keras.preprocessing import image
img_addr = 'D:\\猫狗大战\\kaggle\\train\\cat.1.jpg'
img = image.load_img(img_addr,target_size=(150,150))
将图片转为张量形式并进行标准化
img_tensor = image.img_to_array(img)
img_tensor *= 1./255
img_tensor = img_tensor.reshape((1,)+img_tensor.shape)
查看图片
i