主要内容

可视化卷积神经网络的特征

此示例显示如何可视化卷积神经网络学习的特征。

卷积神经网络使用特征分类图像。网络在培训过程中学习这些功能。网络在训练期间学习的是什么有时候不清楚。但是,你可以使用DeepDreamImage.功能可视化学习的功能。

卷积的图层输出3D激活量,其中沿第三尺寸的切片对应于施加到图层输入的单个滤波器。频道输出完全连接网络末尾的图层对应于早期图层学习的特征的高级组合。

您可以通过使用可视化学习功能的样子DeepDreamImage.生成强烈激活网络层的特定频道的图像。

该示例需要深入学习工具箱™和深度学习工具箱模型对于Googlenet网络金宝app支持包。

负载净化网络

加载佩带的Googlenet网络。

net = googlenet;

可视化早期卷积层

Googlenet网络中有多个卷积层。朝向网络开始的卷积层具有小的接收场大小,并学习小,低级别的特征。朝向网络结束的层具有更大的接收场尺寸并学习更大的特征。

使用分析,查看网络架构并找到卷积层。

分析(净)

卷积层1上的功能

是第一个卷积层。该层是网络中的第二层,并命名'conv1-7x7_s2'

第= 2;name = net.layers(图层).name
名称='conv1-7x7_s2'

可视化此图层学习的前36个功能DeepDreamImage.通过设置渠道成为指数的矢量1:36。放'Pyramidlevels'到1,以便图像不缩放。要一起显示图像,可以使用inmtile.

DeepDreamImage.默认情况下,使用兼容的GPU(如果有)。否则它使用CPU。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持设备的信息,请参阅金宝appGPU通金宝app过发布支持(并行计算工具箱)

频道= 1:36;我= DeepDreamImage(Net,Name,频道,......'Pyramidlevels',1);
| =============================================== ||迭代|激活|金字塔级别|||力量||| =============================================== | | 1 | 0.26 | 1 | | 2 | 6.99 | 1 | | 3 | 14.24 | 1 | | 4 | 21.49 | 1 | | 5 | 28.74 | 1 | | 6 | 35.99 | 1 | | 7 | 43.24 | 1 | | 8 | 50.50 | 1 | | 9 | 57.75 | 1 | | 10 | 65.00 | 1 | |==============================================|
图我= Imtile(我,'thumbnailsize',[64 64]);imshow(i)标题(['层 ',姓名,' 特征'],'口译员''没有任何'

这些图像主要包含边缘和颜色,这表示层上的过滤器'conv1-7x7_s2'是边缘探测器和滤色器。

卷积层2上的功能

第二个卷积层被命名'conv2-3x3_reduce',它对应于第6层。通过设置可视化该图层学习的前36个功能渠道成为指数的矢量1:36

禁止优化过程的详细输出,设置'verbose''错误的'在呼吁中DeepDreamImage。

层= 6;name = net.layers(图层).name
名称='conv2-3x3_reduce'
频道= 1:36;我= DeepDreamImage(Net,Name,频道,......'verbose',错误的,......'Pyramidlevels',1);图我= Imtile(我,'thumbnailsize',[64 64]);imshow(i)name = net.layers(图层).name;标题(['层 ',姓名,' 特征'],'口译员''没有任何'

该层的过滤器检测比第一卷积层更复杂的图案。

可视化更深层次的卷积层

更深层的层学习早期层数学到的高级功能的高级组合。

增加每金字塔水平的金字塔水平和迭代的数量可以以额外的计算为代价产生更详细的图像。您可以使用迭代的数量'numiteration'选项并使用'增加金字塔级别的数量Pyramidlevels.' 选项。

第= 97;name = net.layers(图层).name
name ='inception_4e-1x1'
频道= 1:6;我= DeepDreamImage(Net,Name,频道,......'verbose',错误的,......“numiterations”20,......'Pyramidlevels',2);图我= Imtile(我,'thumbnailsize',[250 250]);imshow(i)name = net.layers(图层).name;标题(['层 ',姓名,' 特征'],'口译员''没有任何'

请注意,更深入网络的层产生更详细的过滤器,这些过滤器已经学习了复杂的模式和纹理。

可视化完全连接的图层

要生成类似于每个类的图像,最接近,请选择完全连接的图层和设置渠道成为课程的指数。

选择完全连接的层(第142层)。

第= 142;name = net.layers(图层).name
name ='lock3-classifier'

选择要通过设置可视化的类渠道成为这些班级名称的指数。

通道= [114 293 341 484 563 950];

类存储在班级输出层的属性(最后一层)。您可以通过选择条目来查看所选类的名称渠道

Net.Layers(END).Classes(频道)
ans =.6×1分类蜗牛老虎斑马城堡喷泉草莓

生成强烈激活这些类的详细图像。放'numiteration'呼吁100DeepDreamImage.制作更详细的图像。从完全连接的层生成的图像对应于图像类。

我= DeepDreamImage(Net,Name,频道,......'verbose',错误的,......'numiteration',100,......'Pyramidlevels',2);图我= Imtile(我,'thumbnailsize',[250 250]);imshow(i)name = net.layers(图层).name;标题(['层 ',姓名,' 特征'])

生成的图像强烈激活所选类。为“斑马”类生成的图像包含不同的斑马条纹,同时为“城堡”类生成的图像包含炮塔和窗户。

也可以看看

||||

相关话题