如何可视化卷积神经网络特征(基于matlab R2018b)

下面我就简单的说一下,也便于理解!
一、先加载预先训练好的网络模型(这里呢,先以Alexnet为例,其他网络模型的应用方法都是一样的!)

net = alexnet; 

在matlab命令行窗口输入,如果你之前没有加载过Alexnet,也不用担心,matlab还是很人性化的,按上面的指令进行添加即可!
如何可视化卷积神经网络特征(基于matlab R2018b)
接下来呢,我们可以看一下Alexnet的整体框架,在matlab中都是封装好的,可以借助一些指令查看,如下图所示:

net.Layers

如何可视化卷积神经网络特征(基于matlab R2018b)
当然还有一个更简单的方法,就是直接点击SeriesNetwork也可以的!
如何可视化卷积神经网络特征(基于matlab R2018b)
二、可视化某卷积层的特征
这里呢我们就选择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
如何可视化卷积神经网络特征(基于matlab R2018b)
下面这个是‘conv3’的特征图,同样是36个。
如何可视化卷积神经网络特征(基于matlab R2018b)
下面我来简单介绍一下上面的程序
语法

I = deepDreamImage(net,layer,channels)
#返回一个图像数组,强烈**图层channels网络net中的通道,其数字索引或名称由layer。这些图像突出显示了网络学习的功能。

I = deepDreamImage(net,layer,channels,Name,Value)
#返回带有一个或多个Name,Value对参数指定的附加选项的图像 。

具体的细节大家可以借助官方文档说明进行深入学习!