如何可视化卷积神经网络特征(基于matlab R2018b)
下面我就简单的说一下,也便于理解!
一、先加载预先训练好的网络模型(这里呢,先以Alexnet为例,其他网络模型的应用方法都是一样的!)
net = alexnet;
在matlab命令行窗口输入,如果你之前没有加载过Alexnet,也不用担心,matlab还是很人性化的,按上面的指令进行添加即可!
接下来呢,我们可以看一下Alexnet的整体框架,在matlab中都是封装好的,可以借助一些指令查看,如下图所示:
net.Layers
当然还有一个更简单的方法,就是直接点击SeriesNetwork也可以的!
二、可视化某卷积层的特征
这里呢我们就选择Alexnet的第一个卷积层(conv1)使用deepDreamImage可视化,第一个卷积层的前36个特征(这里的特征数可以自己设置,取决于你的实际需求!)还有就是将deepDreamImage中的’PyramidLevels’ 设置为1,主要是为了使得图像不会缩放。
layer = 'conv1'
channels = 1:36
I = deepDreamImage(net,layer,channels,...
'PyramidLevels',1,...
'Verbose',0)
#绘图
figure
for i = 1:36
subplot(6,6,i)
imshow(I(:,:,:,i))
end
再看一下’conv3’的特征图
layer = 'conv3'
channels = 1:36
I = deepDreamImage(net,layer,channels,...
'PyramidLevels',1,...
'Verbose',0)
#绘图
figure
for i = 1:36
subplot(6,6,i)
imshow(I(:,:,:,i))
end
三、输出结果
直接运行第二步的程序,即可得出‘conv1’结果,如下所示:一共有36张图片,6*6
下面这个是‘conv3’的特征图,同样是36个。
下面我来简单介绍一下上面的程序
语法
I = deepDreamImage(net,layer,channels)
#返回一个图像数组,强烈**图层channels网络net中的通道,其数字索引或名称由layer。这些图像突出显示了网络学习的功能。
I = deepDreamImage(net,layer,channels,Name,Value)
#返回带有一个或多个Name,Value对参数指定的附加选项的图像 。
具体的细节大家可以借助官方文档说明进行深入学习!