python热图函数 python热图怎么分析结果

利用Python实现卷积神经网络的可视化在本文中 , 将探讨如何可视化卷积神经网络(CNN),该网络在计算机视觉中使用最为广泛 。首先了解CNN模型可视化的重要性,其次介绍可视化的几种方法 , 同时以一个用例帮助读者更好地理解模型可视化这一概念 。
正如上文中介绍的癌症肿瘤诊断案例所看到的,研究人员需要对所设计模型的工作原理及其功能掌握清楚,这点至关重要 。一般而言 , 一名深度学习研究者应该记住以下几点:
1.1 理解模型是如何工作的
1.2 调整模型的参数
1.3 找出模型失败的原因
1.4 向消费者/终端用户或业务主管解释模型做出的决定
2.可视化CNN模型的方法
根据其内部的工作原理,大体上可以将CNN可视化方法分为以下三类:
初步方法:一种显示训练模型整体结构的简单方法
基于激活的方法:对单个或一组神经元的激活状态进行破译以了解其工作过程
基于梯度的方法:在训练过程中操作前向传播和后向传播形成的梯度
下面将具体介绍以上三种方法 , 所举例子是使用Keras深度学习库实现,另外本文使用的数据集是由“识别数字”竞赛提供 。因此 , 读者想复现文中案例时,请确保安装好Kears以及执行了这些步骤 。
研究者能做的最简单的事情就是绘制出模型结构图,此外还可以标注神经网络中每层的形状及参数 。在keras中,可以使用如下命令完成模型结构图的绘制:
model.summary()_________________________________________________________________Layer (type)Output ShapeParam #
=================================================================conv2d_1 (Conv2D)(None, 26, 26, 32)320_________________________________________________________________conv2d_2 (Conv2D)(None, 24, 24, 64)18496_________________________________________________________________max_pooling2d_1 (MaxPooling2 (None, 12, 12, 64)0_________________________________________________________________dropout_1 (Dropout)(None, 12, 12, 64)0_________________________________________________________________flatten_1 (Flatten)(None, 9216)0_________________________________________________________________dense_1 (Dense)(None, 128)1179776_________________________________________________________________dropout_2 (Dropout)(None, 128)0_________________________________________________________________preds (Dense)(None, 10)1290
=================================================================Total params: 1,199,882Trainable params: 1,199,882Non-trainable params: 0
还可以用一个更富有创造力和表现力的方式呈现模型结构框图,可以使用keras.utils.vis_utils函数完成模型体系结构图的绘制 。
另一种方法是绘制训练模型的过滤器,这样就可以了解这些过滤器的表现形式 。例如 , 第一层的第一个过滤器看起来像:
top_layer = model.layers[0]plt.imshow(top_layer.get_weights()[0][:, :, :, 0].squeeze(), cmap='gray')
一般来说,神经网络的底层主要是作为边缘检测器,当层数变深时,过滤器能够捕捉更加抽象的概念,比如人脸等 。
为了理解神经网络的工作过程,可以在输入图像上应用过滤器,然后绘制其卷积后的输出,这使得我们能够理解一个过滤器其特定的激活模式是什么 。比如 , 下图是一个人脸过滤器,当输入图像是人脸图像时候 , 它就会被激活 。
from vis.visualization import visualize_activation
from vis.utils import utils
from keras import activations
from matplotlib import pyplot as plt
%matplotlib inline
plt.rcParams['figure.figsize'] = (18, 6)
# Utility to search for layer index by name.
# Alternatively we can specify this as -1 since it corresponds to the last layer.

推荐阅读